Échec de la mise à jour / de l'installation des packages - Problèmes d'espace - Libération des inodes

Tout d'abord, remarquez qu'il s'agit d'une erreur particulière due aux caractéristiques de ma partition racine et que cela ne se produit généralement pas dans les installations typiques 

Pour commencer, je mentionnerai l'histoire de la façon dont le problème est survenu et ensuite comment le résoudre.

Mon équipe est un Netbook Sony Vaio m120AL que je possède depuis environ 3 longues années avec un disque dur de 320 Go où ils coexistent Windows 7, Chakra , ma partition de travail avec Xubuntu 12.04, la partition swap, la partition / home et une partition d'informations supplémentaires avec laquelle je partage des informations Windows.

Pour ces raisons, mes partitions racine sur les deux systèmes sont considérablement petites selon la plupart des normes (environ 6 Go chacune) mais elles ne m'ont jamais posé de problème car elles sont plus que suffisantes pour tous les paquets dont j'ai besoin.

Maintenant, entrant dans la situation spécifique, il y a quelques jours en appliquant quelques mises à jour dans Xubuntu (parmi lesquels un nouveau noyau a été inclus) Je vois que le gestionnaire de mise à jour affiche une erreur disant qu'il essaie d'installer linux-image-3.2.0-51-generic mais que sa dépendance linux-headers-3.2.0-51 Il ne sera pas installé, je passe en revue l'erreur en détail et je remarque que dpkg se plaint qu'il n'y a pas d'espace disponible.

L'erreur a dit quelque chose de ce style, bien que pas identique parce que je ne l'ai pas écrit:

impossible de créer `/usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h.dpkg-new '(pendant le traitement` ./usr/src/linux-headers -3.2.0 .43-XNUMX / arch / xtensa / include / asm / coprocessor.h '): Il ne reste plus d'espace sur l'appareil

À une certaine occasion, la même chose m'est arrivée mais c'était parce que j'avais laissé plusieurs anciens noyaux s'accumuler sans les supprimer, mais cette fois je vérifie et j'ai pratiquement 600 Mb disponibles selon conky à partir de ce que je ne comprends pas, mais pour confirmer si cela peut être une erreur dans la façon dont je l'avais configuré ou similaire, je lance un df -h:

df -h

Mais j'ai encore de la place dans /!

Donc je ne me trompe pas et c'est plus qu'assez d'espace pour effectuer la mise à jour (je l'ai fait de cette façon plusieurs fois au cours de la longue année depuis que je suis avec Xubuntu) de toute façon je fais un sudo apt-se nettoyer pour nettoyer les paquets que j'ai téléchargés et réessayer, mais avec les mêmes résultats.

Je trouve toujours cela étrange mais de toute façon j'essaye de sortir / des thèmes d'icônes que j'utilise toujours et que j'ai beaucoup modifiés (Faenza y Réveillé) pour libérer plus d'espace, et ainsi finalement réussir à effectuer la mise à jour, en procédant à nouveau pour les renvoyer à /.

Cependant, l'idée restait dans ma tête que l'affaire devait aller ailleurs mais je ne savais pas laquelle. Quelques heures plus tard, lorsque j'essaye d'installer des paquets supplémentaires, j'obtiens à nouveau l'erreur susmentionnée, et encore une fois, il y avait assez d'espace libre, alors je fais mes recherches.

Une recherche internet m'amène à plusieurs fils sur les forums de ubuntu-est, mais la réponse de certains individus il y a toujours la même: vous n'avez pas assez d'espace supprimez les fichiers ou développez la partition racine, mais j'ai remarqué quelque chose en commun dans les différents threads que j'ai trouvés, toujours la partition racine qui avait de l'espace libre, mais c'était similaire au mien (~ 600-900 Mo) et la taille de la partition n'a jamais dépassé 10 Go alors j'ai fini de me convaincre que le problème devait en être un autre, et c'est ainsi que je suis arrivé au titre du post grâce à cette page, le problème est que la partition racine avait 100% des inodes utilisés.

L'utilisation des inodes peut être vue avec la commande df -je:

100% inodes utilisés

100% inodes utilisés

Et maintenant vient l'explication.

Les inodes sont dans le mot de Dennis Ritchie:

Un index, en raison de la structure quelque peu inhabituelle d'un système de fichiers qui stockait les informations d'accès aux fichiers sous forme de liste plate sur le disque, laissant de côté toutes les informations hiérarchiques des répertoires

et par conséquent, il peut arriver que pour un système de fichiers donné, il y ait encore de l'espace libre pour stocker les fichiers, mais il n'y a pas d'inœuds disponibles pour les indexer car il y a beaucoup de fichiers dans le système et donc de nouveaux ne peuvent pas être créés.

Le fait est que le nombre d'inodes dans une partition Ext4 ne peut pas être modifié (il existe d'autres types de systèmes tels que JFX o XFS où ce n'est pas une limitation car il est dynamique) c'est un nombre fixe qui est calculé lors de la création de la partition avec mkfs.ext4 en fonction de sa taille avec un ratio d'octets par inode selon les préférences situées dans /etc/mke2fs.conf.

Lors de l'installation du système, il est habituel d'utiliser les préférences par défaut qui incluent une relation inode = 16384, qui pour les petites partitions pourrait être trop grande et ne pas créer assez (comme dans mon cas). La seule façon de le changer est de créer / formater la partition et de la spécifier avec l'option -i.

Cependant, ce n'était pas une option pour moi, car j'ai déjà mentionné que les inodes sont liés au nombre de fichiers existants, j'ai donc utilisé le script bash suivant trouvé dans débordement de pile et qui est lié sur la page que vous avez mentionnée précédemment pour trouver quels étaient les répertoires de la partition racine avec plus de fichiers:

important de savoir que le script analyse le répertoire d'où il est appelé, c'est-à-dire que dans mon cas j'étais intéressé par l'analyse / Eh bien, d'abord dans le terminal, je dois me déplacer cd / et puis si appeler le script
#!/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_$$

Ce qui donne le résultat suivant:

Et voici les coupables!

Et voici les coupables!

Le numéro qui apparaît à gauche indique le nombre de fichiers présents et le chemin indique le répertoire associé, une ligne en dessous apparaît le répertoire / var / lib / dpkg / info mais comme toujours je purge mes paquets ici il n'y a rien à faire .

Cependant, si je reconnais deux problèmes, le premier et bien que le catpura ne monte pas de là, plusieurs autres entrées incluent les icônes Réveillé, donc je dois les déplacer oui ou oui, d'ailleurs cela explique pourquoi quand je l'ai fait, j'ai pu mettre à jour les paquets, puisque j'ai libéré de nombreux inodes de la partition racine lorsque je les ai déplacés, mais le problème est revenu lorsque je les ai déplacés.

Et deuxièmement, le plus grand nombre d'entrées suivant est associé aux en-têtes de plusieurs anciens noyaux, et je me rends compte que la procédure que j'utilise toujours pour éliminer les anciens noyaux n'élimine pas les en-têtes, ce que j'utilise habituellement est le suivant, dans un terminal j'écris:

dpkg --get-sélections | grep image linux

noyaux-rec

qui me montre les noyaux installés puis j'utilise:

paquet sudo apt-get purge

Où package est le nom du noyau en question, mais cela ne supprime pas les en-têtes associés, je fais donc un:

dpkg --get-sélections | grep linux

vieux en-têtes

Et puis je procède à la suppression des anciens en-têtes, avec:

sudo apt-get purge linux-headers-3.2.0-41 linux-headers-3.2.0-44 linux-headers-3.2.0-45 linux-headers-3.2.0-48

Et voilà, mais bien sûr il y avait aussi la question des icônes Réveillé donc je décide de les déplacer vers ~ / .icons et de les rendre disponibles pour tout le système je fais juste un lien symbolique dans / usr / share / icons, le premier résultat de df -je C'est à l'élimination des en-têtes et le second après avoir déplacé les icônes.

Inodes libérés par le tas!

Inodes libérés par le tas!

Avec cela le problème est résolu, et je peux installer / mettre à jour des packages sans problème, j'espère que ce post sera utile à quelqu'un, ou servira de référence future sur les installations dans de petites partitions et démystifier le sujet si répandu par les forums du manque De l'espace.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Ferdinand Baptiste dit

    Salut, utilisez ubuntu tweak ( http://ubuntu-tweak.com ) est comme tuneup pour Windows, cela vous aide à supprimer beaucoup de déchets et dans le processus désinstalle les anciens noyaux en toute sécurité, cependant, cela laisse un noyau précédent pour démarrer, parfois le dernier noyau ne fonctionnait pas pour moi et j'ai réussi à entrer dans le système grâce à ne pas les supprimer tous.

    1.    Rayonnant dit

      Je le connais depuis longtemps, mais j'ai toujours préféré le faire à ma manière et comprendre le fonctionnement des choses, en tout cas, même sans la paire d'anciens en-têtes qui avaient le problème, il aurait présenté la même chose en plus ou moins de thèmes d'icônes, et qu'au final comme je l'ai mentionné ce n'est PAS un problème de manque de place mais d'inœuds utilisés.

  2.   Ile Maurice dit

    Merci de partager ceci. Jusqu'à présent, je n'ai pas eu ce problème, car les disques que j'utilise sont tous au format Linux, pas de fenêtres, car je n'ai pas ce système sur mon ordinateur.

    Donc, je vais garder cela à l'esprit, au cas où un jour je viendrais voir ce problème.

    1.    Rayonnant dit

      Le problème ne vient pas d'avoir des partitions avec Windows (c'est juste une particularité de mon cas) mais d'avoir de petites partitions racine, inférieures à 10 Go où l'installateur utilise les options par défaut de mke2fs (qui est celle qui formate les partitions) et vous Il part avec un petit nombre d'inœuds pour sa taille, et que comme c'est généralement presque la norme, toutes nos partitions sont en EXT4 qui fixe ce nombre lors de sa création et il n'est pas possible de le modifier plus tard.

  3.   Gerardo H dit

    Comme vous pouvez le voir, c'est le genre de chose qui éloigne les gens de Linux et ils finissent par revenir à Windows, comment pensez-vous qu'un utilisateur ordinaire dans cette situation peut résoudre le problème?
    vous n'avez pas à perdre de temps à réparer et à configurer ce genre de choses et à perdre du temps productif.
    Miguel de Icaza avait raison avec ce qu'il a dit et c'est pourquoi il a décidé de passer à Mac parce que TOUT FONCTIONNE là-bas, point final.

    1.    animé dit

      C'est ça. Sous OS X, tout fonctionne à merveille .. Il est inutile d'expliquer à ce moment pourquoi ce que l'auteur des commentaires post est arrivé, alors s'il vous plaît, personne ne nourrit ce commentaire. Cela se terminera en flammes.

      1.    éliotime3000 dit

        Dans mon cas, Debian fonctionne tout sur mon PC et il s'avère que j'ai utilisé le DVD comme dépôt supplémentaire pour passer de Squeeze à Wheezy. Tout le monde peut donc mettre à jour.

    2.    fabien dit

      Eh bien, vous avez l'esprit d'un utilisateur Windows.
      GNU / Linux est grand pour vous.
      salutations

  4.   sieg84 dit

    c'est intéressant.

  5.   Jorge dit

    Cette erreur est très fréquente lors de l'installation de gentoo sur de petits disques, donc beaucoup de petits fichiers sources et la partition manque d'inœuds même s'il reste 60% d'espace libre. Au moins le manuel le corrige en tapant mke2fs -j -T small / dev / sdaX, il fonctionne probablement sous ubuntu. Avant de jouer à des paramètres étranges 😛

    1.    Rayonnant dit

      Exactement, comme je l'ai mentionné précédemment, vous pouvez spécifier un rapport d'octet d'inode avec l'option -i, mais il y a aussi l'option que vous mentionnez -T utilise l'un des modes par défaut dans le fichier de configuration qui nomme /etc/mke2fs.conf, dans dans ce cas, small appliquera une taille de bloc = 1024, une taille d'inode = 128 et un rapport octet-inods = 4096.

  6.   msx dit

    Excellent!
    C'est le problème typique qui vous ronge la tête pendant longtemps jusqu'à ce que vous réalisiez d'où il vient.
    +10 pour l'explication 😀

    1.    Rayonnant dit

      Comme tu le dis, tu as passé un bon moment à me tuer la tête! Merci beaucoup pour le commentaire, venant de quelqu'un qui en sait autant que toi c'est un honneur!

  7.   Antonio dit

    Excellent !!, j'ai appris autre chose, et cela m'a aidé à récupérer environ 19 Mo en supprimant un ancien en-tête, ainsi qu'en récupérant certains inodes. Maintenant, j'ai plus d'espace à installer. Comme je suis un débutant dans Linux, si vous pensez que ça va, je vous encourage à faire un post sur la façon de formater pour obtenir le plus grand nombre d'inodes et si cela peut être fait tout en conservant les informations du disque ou non.
    Un salut et merci

    1.    Rayonnant dit

      Comme je l'ai mentionné dans une indication au début de l'entrée, c'est un problème très rare et est associé à de petites partitions racine (<10 Go) comme c'est mon cas, avec d'autres tailles, il est peu probable que cela se produise. Maintenant en ce qui concerne le changement du nombre d'inodes, comme je l'ai également mentionné dans l'entrée, il n'est pas possible de le faire sans formatage dans des partitions de type EXT4, donc vous ne pourriez pas conserver les informations sur le disque sans avoir fait une sauvegarde préalable, pour changer le ratio d'octets inodes utiliser l'option -i dans la commande mke2fs ou l'une des options associées à -T (petit, grand, énorme etc.).

  8.   Mario dit

    Excellent! L'exposition du problème, l'explication de ses raisons, ses fondements et les étapes de la solution! J'appelle cela une excellente contribution! Merci Rayonant!

  9.   Diane Bedoya dit

    Merci pour l'article, cela m'a beaucoup aidé. J'avais tout essayé pour surmonter cette erreur et en supprimant les anciens en-têtes et leurs dépendances avec aptitude, j'ai pu réinstaller les programmes et faire les mises à jour. Je vous remercie!

  10.   Jasco dit

    Le même problème m'est arrivé, rien ne s'est passé et cela m'a mis à l'envers hahaha. Dans mon cas, la partition racine avait pas mal de mémoire libre, mais c'était 100% des inodes utilisés! Le fait est que si vous utilisez la même distribution depuis longtemps et que vous ne supprimez aucun vieux noyau au fil du temps, le backlog est terrible. Dans mon cas, j'ai pu résoudre le problème de la même manière que vous le dites, seul le sudo apt-get remove ou purge ne fonctionnait pas pour moi et la clé pour pouvoir supprimer ces fichiers du noyau obsolètes était d'utiliser sudo dpkg –remove et –purge, et un par un, j'ai pu libérer des inodes. Tout ce que vous apprenez. J'aurais aimé trouver cette entrée plus tôt car j'aurais résolu le problème plus tôt. Merci d'avoir esquissé un peu ce qu'est celui des inodes, je n'avais pas beaucoup d'idée.
    Super blog, salutations!

  11.   Leo dit

    Vous êtes un groso et bien que cela soit encombrant, cela se comprend assez bien. J'ai tout fait à la lettre mais ce que je ne peux pas faire c'est supprimer les précédents linux-headers, ça ne me laisse pas, ça me met
    E: dpkg a été interrompu, vous devez exécuter manuellement "sudo dpkg –configure -a" pour corriger le problème
    J'exécute ce que ça me dit et ça me fait
    Réglage de openshot (1.4.0-1ubuntu1) ...
    Traceback (appel le plus récent dernier):
    Fichier "/ usr / sbin / update-python-modules", ligne 478, dans
    package.install (py_installed)
    Fichier "/ usr / sbin / update-python-modules", ligne 112, en cours d'installation
    os.symlink (nom de fichier, chemin de destination)
    OSError: [Errno 2] Aucun fichier ou répertoire de ce type
    Erreur dans sys.excepthook:
    Traceback (appel le plus récent dernier):
    Fichier "/usr/lib/python2.7/dist-packages/apport_python_hook.py", ligne 128, dans apport_excepthook
    os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'w')
    OSError: [Errno 28] Il ne reste plus d'espace sur l'appareil: '/var/crash/_usr_sbin_update-python-modules.0.crash'

    L'exception originale était:
    Traceback (appel le plus récent dernier):
    Fichier "/ usr / sbin / update-python-modules", ligne 478, dans
    package.install (py_installed)
    Fichier "/ usr / sbin / update-python-modules", ligne 112, en cours d'installation
    os.symlink (nom de fichier, chemin de destination)
    OSError: [Errno 2] Aucun fichier ou répertoire de ce type
    dpkg: erreur lors du traitement de OpenShot (–configure):
    le thread a installé le script de post-installation a renvoyé le code de sortie d'erreur 1
    dpkg: erreur: échec de l'ouverture de `/ var / lib / dpkg / status 'pour écrire l'état de la base de données: Il ne reste plus d'espace sur l'appareil
    La question est, qu'est-ce que je porte?

  12.   Pablo dit

    Merci beaucoup! Ce message m'a beaucoup aidé.

  13.   serrement dit

    Olé !!!

    Non seulement vous résolvez un problème délicat, mais j'apprends (et j'apprécie) en cours de route

  14.   Juan Carlos dit

    Salut. Tout d'abord, merci pour le message ...

    Deuxièmement, malheureusement, cela ne m'a pas aidé. Je suis venu vers lui en raison d'un problème de paquet cassé, que le système ne me permet pas de résoudre en raison d'un manque d'espace, qui en réalité d'après ce qui a été expliqué ici était les nœuds i.

    J'ai donc essayé de purger les anciens noyaux, comme suggéré, mais le système ne me laisse pas:
    juan @ juan-P29G: ~ $ sudo apt-get purge linux-image-3.2.0-29-generic-pae
    Lecture de la liste des paquets ... Terminé
    Créer une arborescence de dépendances
    Lecture des informations d'état ... Terminé
    Vous pouvez exécuter "apt-get -f install" pour le corriger:
    Les packages suivants ont des dépendances non satisfaites:
    tzdata-java: dépend de: tzdata (= 2014i-0ubuntu0.12.04) mais 2014e-0ubuntu0.12.04 va être installé
    E: Dépendances non satisfaites. Essayez "apt-get -f install" sans paquet (ou spécifiez une solution).

    Et quand je suis les conseils du système:
    juan @ juan-P29G: ~ $ sudo apt-get -f installer
    Lecture de la liste des paquets ... Terminé
    Créer une arborescence de dépendances
    Lecture des informations d'état ... Terminé
    Correction des dépendances ... Terminé
    Les packages supplémentaires suivants seront installés:
    tzdata
    Les packages suivants seront mis à jour:
    tzdata
    1 mis à jour, 0 sera installé, 0 à supprimer et 23 non mis à jour.
    1 pas entièrement installé ou retiré.
    0 B / 461 Ko de fichiers doivent être téléchargés.
    31,7 ko seront libérés après cette opération.
    Voulez-vous continuer [O / n]? s
    Préconfiguration des packages ...
    (Lecture de la base de données… 893468 fichiers ou répertoires actuellement installés.)
    Préparation du remplacement de tzdata 2014e-0ubuntu0.12.04 (en utilisant… / tzdata_2014i-0ubuntu0.12.04_all.deb)…
    Déballage du remplacement tzdata ...
    dpkg: erreur de traitement /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb (–unpack):
    Impossible de sauvegarder le lien symbolique pour `./usr/share/zoneinfo/posix/America/Santo_Domingo ': Il ne reste plus d'espace sur l'appareil
    Un rapport "apport" n'a pas été rédigé car le message d'erreur indique que l'erreur est le disque plein
    Des erreurs ont été rencontrées lors du traitement:
    /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb
    E: Sub-process / usr / bin / dpkg a retourné un code d'erreur (1)

    Un cercle vicieux ... Bref, je vais voir ce que je peux faire.

    Salutations.

  15.   Juan Carlos dit

    Rebonjour… Je sais comment briser le cercle vicieux.

    Je vais supprimer l'image du plus ancien des noyaux avec cette commande:
    sudo dpkg –supprimer linux-image-3.2.0-29-generic-pae

    Avec cela, je gagne 4389 i-nœuds, assez pour réparer le paquet cassé, puis je supprime les en-têtes de l'ancien noyau comme indiqué dans l'article.

    Et maintenant, je vais récupérer plus d'i-nœuds en supprimant un tas d'anciens noyaux ...

    Merci et salutations, Juan Carlos.

  16.   anonyme dit

    Il ne m'a pas laissé supprimer les en-têtes

    J'ai tapé
    sudo nautile

    Et je suis allé dans le dossier / usr / src
    Là, j'ai vu les fichiers "en-têtes" et je les ai supprimés
    Sur ce, il m'a déjà laissé passer la commande de suppression automatique

  17.   anonyme dit

    Je vous remercie!! le post peut être un peu vieux mais toujours très utile, problème résolu avec les inodes

  18.   Luis dit

    Rayonant: une explication exemplaire.
    Bien que, dans mon cas, j'ai dû étendre la partition (avec Gparted), votre message m'a aidé à comprendre le problème. Et après avoir suivi votre méthode, je suis passé de 90% d'inodes occupés (après avoir étendu la partition), à seulement 28%.
    Merci beaucoup. Je vais l'utiliser à partir de maintenant pour éliminer les anciens noyaux (et en-têtes).
    Merci aussi à Juan Carlos (j'ai eu le même problème).
    Une accolade.

  19.   Hilaire dit

    Post intéressant,
    Dans mon cas, je suis passé de 100% d'utilisation à 9%

    root @ pi: / home / pi # apt-get clean
    root @ pi: / home / pi # df -i
    S. fichiers Nodes-i NUsados ​​NLibres NUso% Monté sur
    / dev / root 1915424 1915288 136% /

    plus tard, j'ai découvert que les tempêtes de ntopng touchaient mon nez, je les ai éliminées et ...

    root @ pi: / home / pi # rm -rf / var / tmp / ntopng /

    Tachán !!!

    racine @ pi: / # df -i
    S. fichiers Nodes-i NUsados ​​NLibres NUso% Monté sur
    / dev / root 1915424 160408 1755016 9% /

    Merci