Actualizarea / instalarea pachetelor nu a reușit - Probleme spațiale - Eliberarea inodurilor

În primul rând, comentează că aceasta este o eroare specială datorită caracteristicilor partiției mele root și că nu se întâmplă de obicei în instalațiile tipice 

Pentru început, voi menționa istoria modului în care s-a întâmplat problema și apoi cum să o rezolvăm.

Echipa mea este o Netbook Sony Vaio m120AL pe care îl am de vreo 3 ani lungi cu un hard disk de 320 GB unde coexistă Ferestre 7, Chakra , partiția mea de lucru cu Ubuntu 12.04, partiția swap, partiția / home și o partiție de informații suplimentare cu care împărtășesc informații Windows.

Din aceste motive, partițiile mele root de pe ambele sisteme sunt considerabil mici la majoritatea standardelor (aproximativ 6 GB fiecare), dar nu mi-au dat niciodată o problemă, deoarece sunt mai mult decât suficiente pentru toate pachetele de care am nevoie.

Acum, intrând în situația specifică, acum câteva zile aplicam câteva actualizări în Xubuntu (printre care a fost inclus un nou Kernel) Văd că managerul de actualizare arată o eroare spunând că încearcă să instaleze linux-image-3.2.0-51-generic, dar că dependența sa linux-headers-3.2.0-51 it nu va fi instalat, revizuiesc eroarea în detaliu și observ că dpkg se plânge că nu există spațiu disponibil.

Eroarea a spus ceva de acest stil, deși nu identic, deoarece nu l-am notat:

nu s-a putut crea `/usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h.dpkg-new '(în timpul procesării' ./usr/src/linux-headers -3.2.0 .43-XNUMX / arch / xtensa / include / asm / coprocessor.h '): Nu a mai rămas spațiu pe dispozitiv

Cu alte ocazii anterioare mi s-a întâmplat același lucru, dar pentru că am permis mai multor nuclee vechi să se acumuleze fără a le șterge, dar de data aceasta verific și am practic 600 Mb disponibili conform conky din ceea ce nu înțeleg, dar pentru a confirma dacă poate fi o eroare în modul în care l-am configurat sau similar am rulat un df -h:

df -h

Dar mai am spațiu în /!

Deci nu mă înșel și este mai mult decât suficient spațiu pentru a efectua actualizarea (am făcut-o așa de multe ori în anul lung de când am fost cu Xubuntu) oricum fac un sudo apt-a face curat pentru a curăța pachetele pe care le-am descărcat și a încerca din nou, dar cu aceleași rezultate.

Încă mi se pare ciudat, dar oricum încerc să mă retrag din / temele pictograme pe care le folosesc întotdeauna și pe care le-am modificat foarte mult (Faenza y Trezit) pentru a elibera mai mult spațiu și, astfel, în cele din urmă reușiți să efectuați actualizarea, procedând din nou pentru a le returna la /.

Cu toate acestea, mi-a rămas în minte ideea că problema trebuie să meargă în altă parte, dar nu știam care. Câteva ore mai târziu, când încerc să instalez câteva pachete suplimentare, primesc din nou eroarea menționată mai sus și încă o dată a fost suficient spațiu liber, așa că îmi fac cercetările.

O căutare pe internet mă conduce la mai multe fire de pe forumurile ubuntu-is, dar răspunsul unor persoane este întotdeauna același: nu aveți suficient spațiu ștergeți fișiere sau extindeți partiția rădăcină, dar am observat ceva în comun în diferitele fire pe care le-am găsit, întotdeauna partiția rădăcină care avea spațiu liber, dar a fost similar cu al meu (~ 600-900 Mb) și dimensiunea partiției nu a depășit niciodată 10 Gb, așa că am terminat să mă conving că problema trebuie să fie alta, și așa am ajuns la titlul postării datorită acest pagina, problema este că partiția rădăcină avea 100% din inodii utilizați.

Utilizarea inodurilor poate fi văzută cu comanda df -i:

Inoduri utilizate 100%

Inoduri utilizate 100%

Și acum vine explicația.

Inodurile sunt în cuvântul lui Dennis Ritchie:

Un index, datorită structurii oarecum neobișnuite a unui sistem de fișiere care stoca informațiile de acces la fișiere ca o listă plană pe disc, lăsând deoparte toate informațiile ierarhice ale directoarelor

și, prin urmare, se poate întâmpla ca pentru un anumit sistem de fișiere să existe încă spațiu liber pentru stocarea fișierelor, dar nu există inode disponibile pentru a le indexa, deoarece există multe fișiere în sistem și, prin urmare, nu pot fi create altele noi.

Ideea este că numărul de inoduri dintr-o partiție EXT4 nu poate fi modificat (există alte tipuri de sisteme precum JFX o XFS unde aceasta nu este o limitare deoarece este dinamică) este un număr fix care se calculează atunci când partiția este creată cu mkfs.ext4 în funcție de dimensiunea sa cu un raport de octeți per inod în funcție de preferințele situate în /etc/mke2fs.conf.

La instalarea sistemului, este obișnuit să utilizați preferințele implicite care includ o relație inode = 16384, care pentru partițiile mici ar putea fi prea mari și să nu creeze suficient (ca în cazul meu). Singura modalitate de ao schimba este prin crearea / formatarea partiției și specificarea acesteia cu opțiunea -i.

Cu toate acestea, aceasta nu a fost o opțiune pentru mine, deoarece am menționat deja că inodurile sunt legate de numărul de fișiere existente, așa că utilizați următorul script bash găsit în stackoverflow și care este legat pe pagina pe care ați menționat-o anterior pentru a găsi care au fost directoarele din partiția rădăcină cu mai multe fișiere:

important de știut că scriptul analizează directorul de unde este apelat, adică, în cazul meu, am fost interesat să analizez / Ei bine, mai întâi în terminal trebuie să mă mut CD / și apoi dacă să apelați scriptul
#!/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_$$

Ceea ce dă următorul rezultat:

Și iată vinovații!

Și iată vinovații!

Numărul care apare în stânga indică numărul de fișiere prezente, iar calea indică directorul asociat, o linie de mai jos apare directorul / var / lib / dpkg / info, dar ca întotdeauna îmi curăț pachetele aici, nu este nimic de făcut.

Cu toate acestea, dacă recunosc două probleme, prima și deși în catpura nu urcă de acolo mai multe intrări includ pictogramele Trezit, așa că trebuie să le mut da sau da, de asemenea, asta explică de ce atunci când am făcut-o am putut actualiza pachetele, deoarece am eliberat multe inode din partiția rădăcină când le-am mutat, dar problema a revenit când le-am mutat.

Și în al doilea rând, următorul număr mai mare de intrări este asociat cu antetele mai multor nuclee vechi și îmi dau seama că procedura pe care o folosesc întotdeauna pentru a elimina nucleele vechi nu elimină anteturile, ceea ce folosesc de obicei este următorul, într-un terminal scriu :

dpkg --get-selections | grep linux-image

miezuri-rec

care îmi arată nucleele instalate și apoi folosesc:

sudo apt-get purge package

În cazul în care pachetul este numele nucleului în cauză, dar acest lucru nu elimină anteturile asociate, așa că fac un:

dpkg --get-selections | grep linux

anteturi vechi

Și apoi procedez la eliminarea antetelor vechi, cu:

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

Și voilà, dar, desigur, a existat și problema icoanelor Trezit așa că decid să le mut în ~ / .icons și să le fac disponibile pentru întregul sistem, fac doar o legătură simbolică în / usr / share / icons, primul rezultat al df -i Este cu eliminarea anteturilor și a doua după ce ați mutat pictogramele.

Inoduri eliberate de heap!

Inoduri eliberate de heap!

Cu aceasta problema este rezolvată și pot instala / actualiza pachete fără probleme, sper că această postare va fi de ajutor cuiva sau va servi pentru referințe viitoare la instalațiile din partiții mici și va demitiza subiectul atât de răspândit de forumurile lipsei De spațiu.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Ferdinand Baptist el a spus

    Bună, folosește ubuntu tweak ( http://ubuntu-tweak.com ) este ca reglarea pentru Windows, vă ajută să îndepărtați o mulțime de gunoi și în acest proces dezinstalează vechiul nucleu în siguranță, cu toate acestea, lasă un nucleu anterior pentru a porni, uneori ultimul nucleu nu a funcționat pentru mine și am reușit să intru în sistemul datorită faptului că nu le ștergeți pe toate.

    1.    Rayonant el a spus

      Îl cunosc de multă vreme, dar am preferat întotdeauna să o fac în felul meu și să înțeleg modul în care funcționează lucrurile, în orice caz, chiar și fără perechea de anteturi vechi care au avut problema, s-ar fi prezentat la fel în mai mult sau mai puțin timp. teme de pictograme și, în cele din urmă, așa cum am menționat, NU este o problemă de lipsă de spațiu, ci de inoduri utilizate.

  2.   Mauritius el a spus

    Vă mulțumim că ați distribuit acest lucru. Până acum nu am avut această problemă, deoarece discurile pe care le folosesc sunt toate în format Linux, fără Windows, deoarece nu am acel sistem pe computer.

    Deci, voi ține cont de acest lucru, în cazul în care într-o zi am venit să văd această problemă.

    1.    Rayonant el a spus

      Problema nu vine de la a avea partiții cu Windows (este doar o particularitate a cazului meu), ci de la a avea partiții rădăcină mici, mai puțin de 10 GB, unde programul de instalare folosește opțiunile implicite ale mke2fs (care este cea care formează partițiile) și vă lasă cu un număr mic de inode pentru dimensiunea sa și, așa cum este de obicei aproape normal, toate partițiile noastre sunt în EXT4, care stabilește acest număr atunci când este creat și nu este posibil să îl modificați ulterior.

  3.   gerard H el a spus

    După cum puteți vedea, acesta este genul de lucruri care îi ține pe oameni departe de Linux și ajung să se întoarcă la Windows, cum credeți că un utilizator obișnuit în această situație poate rezolva problema?
    nu trebuie să vă pierdeți timpul fixând și configurând aceste tipuri de lucruri și pierzând timp productiv.
    Miguel de Icaza a avut dreptate cu ceea ce a spus și de aceea a decis să treacă la Mac pentru că acolo TOTUL FUNCȚIONEAZĂ, punct.

    1.    plin de viață el a spus

      Asta e. În OS X totul funcționează frumos .. Este inutil să explicăm în acest moment de ce s-a întâmplat ce a comentat autorul postării, așa că vă rog, nu alimentați acest comentariu. Se va termina în flacără.

      1.    eliotime3000 el a spus

        În cazul meu, Debian lucrează totul pe computerul meu și se dovedește că am folosit DVD-ul ca repo suplimentar pentru a face upgrade de la Squeeze la Wheezy. Deci, oricine se poate actualiza.

    2.    fabian el a spus

      Ei bine, aveți mintea unui utilizator Windows.
      GNU / Linux este mare pentru tine.
      salutări

  4.   sieg84 el a spus

    acest lucru este interesant.

  5.   Jorge el a spus

    Această eroare este foarte frecventă la instalarea gentoo pe discuri mici, deci multe fișiere sursă mici și partiția rămân fără inoduri chiar dacă mai este 60% din spațiul liber. Cel puțin manualul îl rezolvă tastând mke2fs -j -T small / dev / sdaX, probabil că rulează pe ubuntu. Înainte să joc setări ciudate 😛

    1.    Rayonant el a spus

      Exact, așa cum am menționat anterior, puteți specifica un raport de octeți inode cu opțiunea -i, dar există și opțiunea pe care o menționați -T utilizează unul dintre modurile implicite din fișierul de configurare care poartă numele /etc/mke2fs.conf, în în acest caz mic se va aplica o dimensiune de bloc = 1024, dimensiunea inodului = 128 și un raport de octeți-inods = 4096.

  6.   MSX el a spus

    Excelent!
    Este problema tipică care îți mănâncă capul mult timp până când îți dai seama de unde a venit.
    +10 pentru explicația 😀

    1.    Rayonant el a spus

      După cum spuneți, v-ați distrat bine ucigându-mi capul! Vă mulțumesc foarte mult pentru comentariu, venit de la cineva care știe la fel de mult cât este o onoare!

  7.   Antonio el a spus

    Excelent !!, am învățat altceva și m-a ajutat să recuperez aproximativ 19 MB, eliminând un antet vechi, precum și recuperând niște inoduri. Acum am mai mult spațiu de instalat. Întrucât sunt un debutant în Linux, dacă credeți că este în regulă, vă încurajez să faceți o postare despre cum să formatați pentru a obține cel mai mare număr de inode și dacă se poate face păstrând sau nu informațiile de pe disc.
    Salutari si multumiri

    1.    Rayonant el a spus

      După cum am menționat într-o indicație la începutul intrării, este o problemă foarte rară și este asociată cu partiții rădăcină mici (<10 GB), așa cum este cazul meu, cu alte dimensiuni este puțin probabil să apară. Acum, în ceea ce privește modificarea numărului de inode, așa cum am menționat și în intrare, nu este posibil să o faceți fără formatarea în partițiile de tip EXT4, deci nu ați putea păstra informațiile pe disc fără a fi făcut o copie de rezervă anterioară, pentru a modifica raportul de octeți inodii folosesc opțiunea -i din comanda mke2fs sau una dintre opțiunile asociate cu -T (mic, mare, imens etc.).

  8.   Mario el a spus

    Excelent! Expunerea problemei, explicația de ce s-a întâmplat, fundamentele sale și pașii soluției! Eu numesc asta o contribuție excelentă! Mulțumesc Rayonant!

  9.   Diana Bedoya el a spus

    Mulțumesc pentru articol, m-a ajutat foarte mult. Am încercat totul pentru a depăși această eroare și eliminând anteturile vechi și dependențele lor cu aptitude am reușit să reinstalez programele și să fac actualizările. Mulțumesc!

  10.   Jasco el a spus

    Aceeași problemă mi s-a întâmplat, nu s-a întâmplat nimic și m-a adus cu susul în jos hahaha. În cazul meu, partiția rădăcină avea destulă memorie liberă, dar era cu 100% inoduri utilizate! Ideea este că, dacă utilizați aceeași distribuție de mult timp și nu eliminați niciun nucleu vechi de-a lungul timpului, restanța este teribilă. În cazul meu am reușit să rezolv problema într-un mod similar cu modul în care ați pus-o, doar că sudo apt-get remove sau purge nu a funcționat pentru mine și cheia pentru a putea elimina acele fișiere kernel dezafectate a fost să utilizați sudo dpkg –remove și –purge, și unul câte unul am putut elibera inoduri. Tot ce înveți. Mi-aș dori să fi găsit această intrare mai devreme pentru că aș fi rezolvat problema mai devreme. Vă mulțumim că ați schițat puțin ce este acel inod, nu aveam prea multe idei.
    Super blog, salutări!

  11.   Leu el a spus

    Ești un groso și, deși este greoi, este înțeles destul de bine. Am făcut totul la scrisoare, dar ceea ce nu pot face este să îndepărtez anteturile Linux anterioare, nu mă lasă, mă pune
    E: dpkg a fost întrerupt, trebuie să rulați manual "sudo dpkg –configure -a" pentru a corecta problema
    Execut ceea ce îmi spune și mă face
    Setarea openshot (1.4.0-1ubuntu1) ...
    Traceback (ultimul apel cel mai recent):
    Fișierul „/ usr / sbin / update-python-modules”, linia 478, în
    package.install (py_installed)
    Fișierul „/ usr / sbin / update-python-modules”, linia 112, în instalare
    os.symlink (nume de fișier, destpath)
    OSError: [Errno 2] Nu există un astfel de fișier sau director
    Eroare în sys.excepthook:
    Traceback (ultimul apel cel mai recent):
    Fișierul „/usr/lib/python2.7/dist-packages/apport_python_hook.py”, linia 128, în apport_excepthook
    os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'w')
    OSError: [Errno 28] Nu a mai rămas spațiu pe dispozitiv: '/var/crash/_usr_sbin_update-python-modules.0.crash'

    Excepția inițială a fost:
    Traceback (ultimul apel cel mai recent):
    Fișierul „/ usr / sbin / update-python-modules”, linia 478, în
    package.install (py_installed)
    Fișierul „/ usr / sbin / update-python-modules”, linia 112, în instalare
    os.symlink (nume de fișier, destpath)
    OSError: [Errno 2] Nu există un astfel de fișier sau director
    dpkg: eroare la procesarea openshot (–configurare):
    firul instalat scriptul post-instalare a returnat codul de ieșire a erorii 1
    dpkg: eroare: nu s-a putut deschide `/ var / lib / dpkg / status 'pentru a scrie starea bazei de date: Nu a mai rămas spațiu pe dispozitiv
    Întrebarea este, cu ce mă îmbrac?

  12.   Pablo el a spus

    Mulțumesc mult! Această postare m-a ajutat foarte mult.

  13.   durere el a spus

    Ole!!!

    Nu numai că rezolvi o problemă complicată, dar învăț (și mă bucur) pe parcurs

  14.   Juan Carlos el a spus

    Salut. În primul rând, mulțumesc pentru postare ...

    În al doilea rând, din păcate nu m-a ajutat. Am ajuns la el din cauza unei probleme de pachet spart, pe care sistemul nu-mi permite să o rezolv din cauza lipsei de spațiu, care în realitate din cele explicate aici au fost nodurile i.

    Așa că am încercat să curăț nucleele vechi, așa cum am sugerat, dar sistemul nu mă lasă:
    juan @ juan-P29G: ~ $ sudo apt-get purge linux-image-3.2.0-29-generic-pae
    Citirea listei de pachete ... Gata
    Crearea arborelui dependenței
    Citirea informațiilor de stare ... Gata
    Poate doriți să rulați „apt-get -f install” pentru a-l corecta:
    Următoarele pachete au dependențe nesatisfăcute:
    tzdata-java: Depinde: tzdata (= 2014i-0ubuntu0.12.04) dar 2014e-0ubuntu0.12.04 va fi instalat
    E: Dependențele nu sunt îndeplinite. Încercați „apt-get -f install” fără pachete (sau specificați o soluție).

    Și când urmez sfaturile sistemului:
    juan @ juan-P29G: ~ $ sudo apt-get -f install
    Citirea listei de pachete ... Gata
    Crearea arborelui dependenței
    Citirea informațiilor de stare ... Gata
    Corectarea dependențelor ... Gata
    Următoarele pachete suplimentare vor fi instalate:
    tzdata
    Următoarele pachete vor fi actualizate:
    tzdata
    1 actualizat, 0 vor fi instalate, 0 pentru eliminare și 23 nu sunt actualizate.
    1 nu este complet instalat sau eliminat.
    0 B / 461 kB de fișiere trebuie descărcate.
    31,7 kB vor fi eliberați după această operațiune.
    Doriți să continuați [DA / N]? s
    Pre-configurarea pachetelor ...
    (Citirea bazei de date ... 893468 fișiere sau directoare instalate în prezent.)
    Pregătirea pentru înlocuirea tzdata 2014e-0ubuntu0.12.04 (folosind ... / tzdata_2014i-0ubuntu0.12.04_all.deb) ...
    Despachetarea înlocuitorului tzdata ...
    dpkg: procesarea erorilor /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb (–unpack):
    Imposibil de copiat linkul simbolic pentru „./usr/share/zoneinfo/posix/America/Santo_Domingo”: nu a mai rămas spațiu pe dispozitiv
    Nu s-a scris un raport „atribuire” deoarece mesajul de eroare indică faptul că eroarea este plină pe disc
    Au fost întâmpinate erori în timpul procesării:
    /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb
    E: Subprocesul / usr / bin / dpkg a returnat un cod de eroare (1)

    Un cerc vicios ... Oricum, voi vedea ce pot face.

    Salutări.

  15.   Juan Carlos el a spus

    Bună ziua din nou ... Știu cum să rup ciclul vicios.

    Voi elimina imaginea celui mai vechi dintre nuclee cu această comandă:
    sudo dpkg –elimină linux-image-3.2.0-29-generic-pae

    Cu asta câștig 4389 de i-noduri, suficient pentru a repara pachetul rupt și apoi îndepărtez antetele din nucleul mai vechi, așa cum este indicat în postare.

    Și acum voi recupera mai multe i-noduri eliminând o grămadă de nuclee vechi ...

    Mulțumiri și salutări, Juan Carlos.

  16.   anonim el a spus

    Nu mă lăsa să șterg anteturile

    Am tastat
    sudo nautilus

    Și am mers la folderul / usr / src
    Acolo am văzut fișierele „antet” și le-am șters
    Cu asta mi-a permis deja să plasez comanda de eliminare automată

  17.   anonim el a spus

    Mulțumesc!! postarea poate fi un pic veche, dar totuși foarte utilă, problemă rezolvată cu inoduri

  18.   Luis el a spus

    Rayonant: o explicație exemplară.
    Deși, în cazul meu, a trebuit să extind partiția (cu Gparted), postarea dvs. m-a ajutat să înțeleg problema. Și după ce ți-am urmat metoda, am trecut de la 90% inode ocupate (după ce am extins partiția), la doar 28%.
    Mulțumesc mult. Îl voi folosi de acum înainte pentru a elimina nucleele (și antetele) vechi.
    Mulțumesc și lui Juan Carlos (am avut aceeași problemă).
    O imbratisare.

  19.   Hilar el a spus

    Post interesant,
    În cazul meu am scăzut de la 100% la 9%

    root @ pi: / home / pi # apt-get clean
    root @ pi: / home / pi # df -i
    S. files Nodes-i NUsados ​​NLibres NUso% Mounted on
    / dev / root 1915424 1915288 136 100% /

    mai târziu am constatat că furtunile ntopng îmi atingeau nasul, le-am eliminat și ...

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

    Tachán !!!

    root @ pi: / # df -i
    S. files Nodes-i NUsados ​​NLibres NUso% Mounted on
    / dev / root 1915424 160408 1755016 9% /

    Mulțumesc