Zunächst werde ich die Geschichte erwähnen, wie das Problem aufgetreten ist und wie es dann gelöst werden kann.
Mein Team ist ein Sony Vaio m120AL Netbook Das habe ich seit ca. 3 langen Jahren mit einer 320 GB Festplatte, auf der sie koexistieren Windows 7, Chakra , meine Arbeitsteilung mit Xubuntu 12.04, die Swap-Partition, die / home-Partition und eine zusätzliche Informationspartition, mit der ich Informationen teile Windows.
Aus diesen Gründen sind meine Root-Partitionen auf beiden Systemen für die meisten Standards erheblich klein (jeweils etwa 6 GB), aber sie haben mir nie ein Problem bereitet, da sie für alle benötigten Pakete mehr als ausreichend sind.
Geben Sie nun die spezifische Situation ein, und wenden Sie vor einigen Tagen einige Aktualisierungen an Xubuntu (unter denen ein neuer Kernel enthalten war) Ich sehe, dass der Update-Manager einen Fehler anzeigt, der besagt, dass er versucht, Linux-Image-3.2.0-51-generic zu installieren, aber dass seine Abhängigkeit Linux-Header-3.2.0-51 es wird nicht installiert, ich überprüfe den Fehler im Detail und stelle fest, dass dpkg sich beschwert, dass kein Speicherplatz verfügbar ist.
Der Fehler sagte etwas über diesen Stil aus, obwohl er nicht identisch war, weil ich ihn nicht aufgeschrieben habe:
"/usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h.dpkg-new" (während der Verarbeitung "./usr/src/linux-headers -3.2.0 konnte nicht erstellt werden .43-XNUMX / arch / xtensa / include / asm / coprocessor.h '): Auf dem Gerät ist kein Platz mehr vorhanden
Bei einer früheren Gelegenheit ist mir dasselbe passiert, aber es war, weil ich zugelassen hatte, dass sich mehrere alte Kernel ansammelten, ohne sie zu löschen, aber diesmal überprüfe ich und ich habe praktisch 600 MB zur Verfügung Conky Nach dem, was ich nicht verstehe, aber um zu bestätigen, ob es ein Fehler in der Konfiguration oder ähnlichem sein könnte, führe ich a aus df -h:
Ich irre mich also nicht und das ist mehr als genug Platz, um das Update durchzuführen (ich habe es in dem langen Jahr, seit ich bei Xubuntu war, viele Male so gemacht), trotzdem mache ich einen Sudo apt-get sauber um die heruntergeladenen Pakete zu bereinigen und es erneut zu versuchen, aber mit den gleichen Ergebnissen.
Ich finde es immer noch seltsam, aber trotzdem versuche ich, mich von den Symbolthemen zu entfernen, die ich immer benutze und die ich stark modifiziert habe (Faenza y Erwacht), um mehr Speicherplatz freizugeben und damit das Update endgültig durchzuführen, und fahren Sie erneut fort, um sie an / zurückzugeben.
Die Idee blieb jedoch in meinem Kopf, dass die Angelegenheit woanders hingehen musste, aber ich wusste nicht, welche. Ein paar Stunden später, wenn ich versuche, einige zusätzliche Pakete zu installieren, wird der oben genannte Fehler erneut angezeigt, und es war wieder genügend Speicherplatz verfügbar, sodass ich mich der Untersuchung widme.
Eine Internetsuche führt mich zu mehreren Threads in den Foren von Ubuntu-es, aber die Antwort einiger Personen dort ist immer die gleiche: Sie haben nicht genügend Speicherplatz, um Dateien zu löschen oder die Root-Partition zu erweitern, aber ich habe in den verschiedenen Threads, die ich gefunden habe, etwas gemeinsam festgestellt, immer die Root-Partition, die freien Speicherplatz hatte. aber es war ähnlich wie bei mir (~ 600-900 Mb) und die Größe der Partition überschritt nie 10 Gb, so dass ich mich davon überzeugte, dass das Problem ein anderes sein musste, und so kam ich dank zum Titel des Beitrags dies Seite ist das Problem, dass die Root-Partition 100% der verwendeten Inodes hatte.
Die Verwendung von Inodes kann mit dem Befehl angezeigt werden df-i:
Und jetzt kommt die Erklärung.
Die Inodes sind im Wort von Dennis Ritchie:
Ein Index aufgrund der etwas ungewöhnlichen Struktur eines Dateisystems, in dem die Zugriffsinformationen auf die Dateien als flache Liste auf der Festplatte gespeichert wurden, wobei alle hierarchischen Informationen der Verzeichnisse außer Acht gelassen wurden
Daher kann es vorkommen, dass für ein bestimmtes Dateisystem noch freier Speicherplatz zum Speichern von Dateien vorhanden ist. Es sind jedoch keine Inodes zum Indizieren verfügbar, da das System viele Dateien enthält und daher keine neuen erstellt werden können.
Der Punkt ist, dass die Anzahl der Inodes in einer Partition Ext4 kann nicht geändert werden (es gibt andere Arten von Systemen wie z JFX o XFS Wenn dies keine Einschränkung darstellt, weil es dynamisch ist, handelt es sich um eine feste Zahl, die berechnet wird, wenn die Partition mit mkfs.ext4 entsprechend ihrer Größe mit einem Verhältnis von Bytes pro Inode gemäß den Einstellungen in erstellt wird /etc/mke2fs.conf.
Bei der Installation des Systems werden normalerweise die Standardeinstellungen verwendet, die eine inode = 16384-Beziehung enthalten, die für kleine Partitionen möglicherweise zu groß ist und nicht genügend erstellt (wie in meinem Fall). Die einzige Möglichkeit, dies zu ändern, besteht darin, die Partition zu erstellen / zu formatieren und mit der Option anzugeben -i.
Dies war jedoch keine Option für mich, da ich bereits erwähnt habe, dass die Inodes mit der Anzahl der vorhandenen Dateien zusammenhängen. Daher habe ich das folgende Bash-Skript verwendet, das in gefunden wurde Paketüberfluss und dass es auf der Seite, die Sie zuvor erwähnt haben, verlinkt ist, um herauszufinden, welche Verzeichnisse in der Stammpartition mit mehr Dateien vorhanden sind:
#!/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_$$
Welches ergibt das folgende Ergebnis:
Die Zahl auf der linken Seite gibt die Anzahl der vorhandenen Dateien an und der Pfad gibt das zugehörige Verzeichnis an. In einer Zeile darunter wird das Verzeichnis / var / lib / dpkg / info angezeigt, aber wie immer lösche ich meine Pakete hier. Es gibt nichts zu tun.
Wenn ich jedoch zwei Probleme erkenne, das erste und obwohl es in der Catpura nicht von dort nach oben geht, enthalten mehrere weitere Einträge die Symbole Erwacht, also muss ich sie ja oder ja verschieben, auch das erklärt, warum ich damals die Pakete aktualisieren konnte, da ich beim Verschieben viele Inodes von der Root-Partition befreit habe, aber das Problem trat zurück, als ich sie verlagerte.
Und zweitens ist die nächst größere Anzahl von Einträgen mit den Headern mehrerer alter Kernel verknüpft, und mir ist klar, dass die Prozedur, die ich immer verwende, um die alten Kernel zu entfernen, die Header nicht entfernt. Was ich normalerweise verwende, ist das Folgende in a Terminal Ich schreibe:
dpkg --get-selections | grep Linux-Image
Das zeigt mir die installierten Kernel und dann benutze ich:
sudo apt-get purge package
Wobei package der Name des fraglichen Kernels ist, aber die zugehörigen Header dadurch nicht entfernt werden, also mache ich Folgendes:
dpkg --get-selections | grep Linux
Und dann entferne ich die alten Header mit:
sudo apt-get bereinigen Linux-Header-3.2.0-41 Linux-Header-3.2.0-44 Linux-Header-3.2.0-45 Linux-Header-3.2.0-48
Und voilà, aber natürlich gab es auch das Thema Ikonen Erwacht Also entscheide ich mich, sie nach ~ / .icons zu verschieben und sie für das gesamte System verfügbar zu machen. Ich erstelle einfach einen symbolischen Link in / usr / share / icons, dem ersten Ergebnis von df-i Es ist mit der Beseitigung der Überschriften und der zweiten nach dem Verschieben der Symbole.
Damit ist das Problem gelöst, und ich kann Pakete problemlos installieren / aktualisieren. Ich hoffe, dieser Beitrag wird jemandem helfen oder als zukünftige Referenz für Installationen in kleinen Partitionen dienen und das Thema entmystifizieren, das in den Foren des Mangels so verbreitet wird Raum.
Hallo, benutze Ubuntu Tweak ( http://ubuntu-tweak.com ) ist wie das Tuning für Windows, es hilft Ihnen, viel Müll zu entfernen und dabei den alten Kernel sicher zu deinstallieren. Es bleibt jedoch ein vorheriger Kernel zum Booten übrig. In einigen Fällen funktionierte der letzte Kernel nicht für mich und ich habe es geschafft Betreten Sie das System, indem Sie nicht alle löschen.
Ich kenne ihn schon lange, aber ich habe es immer vorgezogen, es auf meine Weise zu tun und zu verstehen, wie die Dinge funktionieren, auf jeden Fall, auch ohne die beiden alten Header, die das Problem hatten, hätte es dasselbe in mehr dargestellt oder weniger Zeit. Icon-Themen, und das ist am Ende, wie ich bereits erwähnte, KEIN Problem des Platzmangels, sondern der verwendeten Inodes.
Vielen Dank für das Teilen. Bisher hatte ich dieses Problem nicht, da die von mir verwendeten Discs alle im Linux-Format und ohne Windows vorliegen, da ich dieses System nicht auf meinem Computer habe.
Also werde ich dies berücksichtigen, falls ich eines Tages dieses Problem sehen sollte.
Das Problem besteht nicht darin, Partitionen mit Windows zu haben (dies ist nur eine Besonderheit meines Falls), sondern darin, dass kleine Root-Partitionen mit weniger als 10 GB vorhanden sind, bei denen das Installationsprogramm die Standardoptionen von mke2fs verwendet (die die Partitionen formatieren) und Sie verlassen es mit einer kleinen Anzahl von Inodes für seine Größe, und dass, wie es fast die Norm ist, alle unsere Partitionen in EXT4 sind, das diese Nummer festlegt, wenn es erstellt wird und es nicht möglich ist, es später zu ändern.
Wie Sie sehen können, hält dies die Leute von Linux fern und sie kehren zu Windows zurück. Wie kann ein gewöhnlicher Benutzer in dieser Situation das Problem lösen?
Sie müssen Ihre Zeit nicht damit verschwenden, solche Dinge zu reparieren und zu konfigurieren und produktive Zeit zu verschwenden.
Miguel de Icaza hatte Recht mit dem, was er sagte, und deshalb entschied er sich, auf Mac umzusteigen, weil dort ALLES FUNKTIONIERT, Punkt.
Das ist es. In OS X funktioniert alles wunderbar. Es ist sinnlos, in diesem Moment zu erklären, warum der Autor der Post-Kommentare passiert ist. Bitte, niemand füttert diesen Kommentar. Es wird in Flammen enden.
In meinem Fall funktioniert Debian alles auf meinem PC und es stellt sich heraus, dass ich die DVD als zusätzliches Repo für ein Upgrade von Squeeze auf Wheezy verwendet habe. So kann jeder aktualisieren.
Dann haben Sie den Verstand eines Windows-Benutzers.
GNU / Linux ist groß für Sie.
Grüße
das ist interessant.
Dieser Fehler tritt sehr häufig auf, wenn Gentoo auf kleinen Festplatten installiert wird, so dass vielen kleinen Quelldateien und der Partition die Inodes ausgehen, selbst wenn noch 60% des freien Speicherplatzes vorhanden sind. Zumindest das Handbuch löst es durch Eingabe von mke2fs -j -T small / dev / sdaX, es läuft wahrscheinlich auf Ubuntu. Bevor ich seltsame Einstellungen spiele 😛
Genau wie bereits erwähnt, können Sie mit der Option -i ein Inode-Byte-Verhältnis angeben. Es gibt jedoch auch die Option, die Sie erwähnen. -T verwendet einen der Standardmodi in der Konfigurationsdatei mit dem Namen /etc/mke2fs.conf in In diesem Fall wendet small eine Blockgröße = 1024, eine Inode-Größe = 128 und ein Byte-Inods-Verhältnis = 4096 an.
Excellent!
Es ist das typische Problem, das Ihren Kopf lange frisst, bis Sie erkennen, woher er kommt.
+10 für die Erklärung 😀
Wie Sie sagen, Sie hatten eine gute Zeit, meinen Kopf zu töten! Vielen Dank für den Kommentar, der von jemandem kommt, der so viel weiß wie Sie, ist eine Ehre!
Ausgezeichnet !!, ich habe etwas anderes gelernt und es hat mir geholfen, etwa 19 MB wiederherzustellen, indem ich einen alten Header entfernt und einige Inodes wiederhergestellt habe. Jetzt habe ich mehr Platz zum Installieren. Da ich ein ziemlicher Linux-Neuling bin, empfehle ich Ihnen, einen Beitrag darüber zu verfassen, wie die höchste Anzahl von Inodes formatiert werden kann und ob dies unter Beibehaltung der Festplatteninformationen möglich ist oder nicht.
Ein Gruß und Dank
Wie ich in einem Hinweis am Anfang des Eintrags erwähnt habe, handelt es sich um ein sehr seltenes Problem, das wie in meinem Fall mit kleinen Root-Partitionen (<10 GB) verbunden ist. Bei anderen Größen ist dies unwahrscheinlich. Was nun die Änderung der Anzahl der Inodes betrifft, wie ich auch im Eintrag erwähnt habe, ist es nicht möglich, dies ohne Formatierung in Partitionstypen EXT4 zu tun, sodass Sie die Informationen nicht auf der Festplatte behalten können, ohne zuvor eine Sicherung durchgeführt zu haben Ändern Sie das Byte-Verhältnis inodes. Verwenden Sie die Option -i im Befehl mke2fs oder eine der mit -T verknüpften Optionen (klein, groß, groß usw.).
Ausgezeichnet! Die Darstellung des Problems, die Erklärung, warum es passiert ist, seine Grundlagen und die Schritte der Lösung! Ich nenne das einen hervorragenden Beitrag! Danke Rayonant!
Danke für den Artikel, es hat mir sehr geholfen. Ich hatte alles versucht, um diesen Fehler zu überwinden, und indem ich die alten Header und ihre Abhängigkeiten mit Eignung entfernte, konnte ich Programme neu installieren und die Updates durchführen. Vielen Dank!
Das gleiche Problem ist mir passiert, nichts ist passiert und es hat mich auf den Kopf gestellt, hahaha. In meinem Fall hatte die Root-Partition ziemlich viel freien Speicher, aber es wurden 100% Inodes verwendet! Der Punkt ist, wenn Sie die gleiche Distribution für eine lange Zeit verwendet haben und keinen alten Kernel im Laufe der Zeit entfernen, ist der Rückstand schrecklich. In meinem Fall konnte ich das Problem auf ähnliche Weise lösen, wie Sie es ausgedrückt haben. Nur das Entfernen oder Löschen von sudo apt-get funktionierte bei mir nicht, und der Schlüssel zum Entfernen dieser nicht verwendeten Kerneldateien war die Verwendung von sudo dpkg –remove and –purge, und eins nach dem anderen konnte ich Inodes freigeben. Alles was du lernst. Ich wünschte, ich hätte diesen Eintrag früher gefunden, weil er die Angelegenheit früher gelöst hätte. Vielen Dank, dass Sie ein bisschen skizziert haben, was das mit Inodes ist. Ich hatte nicht viel Ahnung.
Toller Blog, Grüße!
Sie sind ein Groso und obwohl es umständlich ist, wird es ziemlich gut verstanden. Ich habe alles mit dem Brief gemacht, aber was ich nicht tun kann, ist die vorherigen Linux-Header zu entfernen, es lässt mich nicht, es bringt mich
E: dpkg wurde unterbrochen. Sie müssen "sudo dpkg –configure -a" manuell ausführen, um das Problem zu beheben
Ich führe aus, was es mir sagt und es macht mich
OpenShot einstellen (1.4.0-1ubuntu1) ...
Traceback (jüngste Aufforderung zuletzt):
Datei "/ usr / sbin / update-python-modules", Zeile 478, in
package.install (py_installed)
Datei "/ usr / sbin / update-python-modules", Zeile 112, in install
os.symlink (Dateiname, Zielpfad)
OSError: [Errno 2] Keine solche Datei oder kein solches Verzeichnis
Fehler in sys.excepthook:
Traceback (jüngste Aufforderung zuletzt):
Datei "/usr/lib/python2.7/dist-packages/apport_python_hook.py", Zeile 128, in apport_excepthook
os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'w')
OSError: [Errno 28] Auf dem Gerät ist kein Speicherplatz mehr vorhanden: '/var/crash/_usr_sbin_update-python-modules.0.crash'
Ursprüngliche Ausnahme war:
Traceback (jüngste Aufforderung zuletzt):
Datei "/ usr / sbin / update-python-modules", Zeile 478, in
package.install (py_installed)
Datei "/ usr / sbin / update-python-modules", Zeile 112, in install
os.symlink (Dateiname, Zielpfad)
OSError: [Errno 2] Keine solche Datei oder kein solches Verzeichnis
dpkg: Fehler bei der Verarbeitung von openshot (–configure):
Der Thread, der das Skript nach der Installation installiert hat, hat den Fehler-Exit-Code 1 zurückgegeben
dpkg: Fehler: Fehler beim Öffnen von "/ var / lib / dpkg / status" zum Schreiben des Datenbankstatus: Kein Speicherplatz mehr auf dem Gerät
Die Frage ist, was trage ich?
Vielen Dank! Dieser Beitrag hat mir sehr geholfen.
Ol !!!
Sie lösen nicht nur ein kniffliges Problem, sondern ich lerne (und genieße) dabei
Hallo. Zunächst einmal vielen Dank für den Beitrag ...
Zweitens hat es mir leider nicht geholfen. Ich kam zu ihm aufgrund eines Problems eines kaputten Pakets, das das System aufgrund von Platzmangel nicht lösen kann. In Wirklichkeit handelte es sich hierbei um die Knoten i.
Also habe ich versucht, die alten Kernel wie vorgeschlagen zu löschen, aber das System lässt mich nicht:
juan @ juan-P29G: ~ $ sudo apt-get bereinigen linux-image-3.2.0-29-generic-pae
Paketliste lesen ... Fertig
Abhängigkeitsbaum erstellen
Statusinformationen lesen ... Fertig
Möglicherweise möchten Sie "apt-get -f install" ausführen, um dies zu korrigieren:
Die folgenden Pakete haben nicht erfüllte Abhängigkeiten:
tzdata-java: Abhängig von: tzdata (= 2014i-0ubuntu0.12.04), aber 2014e-0ubuntu0.12.04 wird installiert
E: Abhängigkeiten nicht erfüllt. Versuchen Sie "apt-get -f install" ohne Pakete (oder geben Sie eine Lösung an).
Und wenn ich den Ratschlägen des Systems folge:
juan @ juan-P29G: ~ $ sudo apt-get -f installieren
Paketliste lesen ... Fertig
Abhängigkeitsbaum erstellen
Statusinformationen lesen ... Fertig
Abhängigkeiten korrigieren ... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
tzdaten
Die folgenden Pakete werden aktualisiert:
tzdaten
1 aktualisiert, 0 wird installiert, 0 entfernt und 23 nicht aktualisiert.
1 nicht vollständig installiert oder entfernt.
0 B / 461 kB Dateien müssen heruntergeladen werden.
Nach diesem Vorgang werden 31,7 kB freigegeben.
Möchten Sie fortfahren [J / N]? s
Pakete vorkonfigurieren ...
(Lesen der Datenbank… 893468 Dateien oder Verzeichnisse, die derzeit installiert sind.)
Vorbereitung zum Ersetzen von tzdata 2014e-0ubuntu0.12.04 (mit… / tzdata_2014i-0ubuntu0.12.04_all.deb)…
Auspacken des tzdata-Ersatzes ...
dpkg: Fehlerverarbeitung /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb (–unpack):
Symlink für `./usr/share/zoneinfo/posix/America/Santo_Domingo 'kann nicht gesichert werden: Auf dem Gerät ist kein Speicherplatz mehr vorhanden
Ein "Apport" -Report wurde nicht geschrieben, da die Fehlermeldung anzeigt, dass der Fehler auf der Festplatte voll ist
Bei der Verarbeitung sind Fehler aufgetreten:
/var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb
E: Sub-process / usr / bin / dpkg einen Fehlercode zurückgegeben (1)
Ein Teufelskreis ... Wie auch immer, ich werde sehen, was ich tun kann.
Grüße.
Hallo nochmal… Ich weiß, wie man den Teufelskreis durchbricht.
Ich werde das Image des ältesten Kernels mit diesem Befehl entfernen:
sudo dpkg –entferne linux-image-3.2.0-29-generic-pae
Damit erhalte ich 4389 i-Knoten, genug, um das kaputte Paket zu reparieren, und entferne dann die Header aus dem älteren Kernel, wie im Beitrag angegeben.
Und jetzt werde ich mehr i-Knoten wiederherstellen, indem ich ein paar alte Kernel entferne ...
Danke und Grüße, Juan Carlos.
Er ließ mich die Überschriften nicht löschen
Ich habe getippt
Sudo-Nautilus
Und ich bin in den Ordner / usr / src gegangen
Dort habe ich die "Header" -Dateien gesehen und sie gelöscht
Damit hat er mich bereits die Autoremove-Bestellung aufgeben lassen
Vielen Dank!! Der Beitrag ist vielleicht etwas alt, aber immer noch sehr nützlich. Das Problem wurde mit Inodes gelöst
Rayonant: eine beispielhafte Erklärung.
Obwohl ich in meinem Fall die Partition (mit Gparted) erweitern musste, hat mir Ihr Beitrag geholfen, das Problem zu verstehen. Und nachdem ich Ihrer Methode gefolgt bin, bin ich von 90% belegten Inodes (nachdem ich die Partition erweitert habe) auf nur 28% gestiegen.
Vielen Dank. Ich werde es von nun an verwenden, um die alten Kernel (und Header) zu entfernen.
Danke auch an Juan Carlos (ich hatte das gleiche Problem).
Eine Umarmung.
Interessanter Beitrag,
In meinem Fall bin ich von 100% auf 9% gesunken.
root @ pi: / home / pi # apt-get clean
root @ pi: / home / pi # df -i
S. Dateien Nodes-i NUsados NLibres NUso% Mounted on
/ dev / root 1915424 1915288 136 100% /
später stellte ich fest, dass die ntopng Stürme meine Nase berührten, ich beseitigte sie und ...
root @ pi: / home / pi # rm -rf / var / tmp / ntopng /
Tachán !!!
root @ pi: / # df -i
S. Dateien Nodes-i NUsados NLibres NUso% Mounted on
/ dev / root 1915424 160408 1755016 9% /
dank