Impossibile aggiornare / installare i pacchetti - Problemi di spazio - Libera inode

Innanzitutto commenta che questo è un errore particolare dovuto alle caratteristiche della mia partizione di root e che di solito non si verifica nelle installazioni tipiche 

Per iniziare menzionerò la storia di come si è verificato il problema e poi come risolverlo.

La mia squadra è un Netbook Sony Vaio m120AL che ho da circa 3 lunghi anni con un hard disk da 320 GB dove coesistono Windows 7, Chakra , la mia partizione di lavoro con Xubuntu 12.04, la partizione di swap, la partizione / home e una partizione di informazioni aggiuntive con cui condivido le informazioni Finestre.

Per questi motivi le mie partizioni di root su entrambi i sistemi sono considerevolmente piccole per la maggior parte degli standard (circa 6 GB ciascuna) ma non mi hanno mai dato problemi in quanto sono più che sufficienti per tutti i pacchetti di cui ho bisogno.

Entrando ora nella situazione specifica, alcuni giorni fa applicando alcuni aggiornamenti in Xubuntu (tra cui è stato incluso un nuovo Kernel) Vedo che il gestore degli aggiornamenti mostra un errore dicendo che sta provando ad installare linux-image-3.2.0-51-generic ma che la sua dipendenza linux-headers-3.2.0-51 It non verrà installato, rivedo l'errore in dettaglio e noto che dpkg si lamenta che non c'è spazio disponibile.

L'errore diceva qualcosa di questo stile, anche se non identico perché non l'ho annotato:

impossibile creare `/usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h.dpkg-new '(durante l'elaborazione` ./usr/src/linux-headers -3.2.0 .43-XNUMX / arch / xtensa / include / asm / coprocessor.h '): Nessuno spazio rimasto sul dispositivo

In qualche precedente occasione mi è successa la stessa cosa ma era stato perché avevo permesso a diversi vecchi kernel di accumularsi senza cancellarli, ma questa volta controllo e ho praticamente 600 Mb a disposizione secondo Conky da quello che non capisco, ma per confermare se può essere un errore su come l'avevo configurato o simili eseguo un file df -h:

df -h

Ma ho ancora spazio in /!

Quindi non mi sbaglio e quello è spazio più che sufficiente per eseguire l'aggiornamento (l'ho fatto in questo modo molte volte nel lungo anno da quando sono stato con Xubuntu) comunque faccio un sudo apt-pulisci per pulire i pacchetti che ho scaricato e riprovare, ma con gli stessi risultati.

Lo trovo ancora strano ma comunque cerco di uscire dai / dai temi delle icone che uso sempre e che ho modificato molto (Faenza y Risvegliato) per liberare più spazio, e riuscire così finalmente ad eseguire l'aggiornamento, procedendo nuovamente per riportarli in /.

Tuttavia, mi restava in testa l'idea che la questione dovesse andare altrove ma non sapevo quale. Poche ore dopo, quando provo a installare alcuni pacchetti extra, ricevo di nuovo il suddetto errore, e ancora una volta c'era abbastanza spazio da risparmiare, quindi faccio le mie ricerche.

Una ricerca su Internet mi porta a diversi thread sui forum ubuntu-is, ma la risposta di alcuni individui c'è sempre la stessa: non hai abbastanza spazio cancella file o espandi la partizione di root, ma ho notato qualcosa in comune nei diversi thread che ho trovato, sempre la partizione di root che aveva spazio libero, ma era simile al mio (~ 600-900 Mb) e la dimensione della partizione non superava mai i 10 Gb quindi ho finito di convincermi che il problema doveva essere un altro, ed è così che sono arrivato al titolo del post grazie a questo pagina, il problema è che la partizione di root aveva il 100% degli inode utilizzati.

L'uso degli inode può essere visto con il comando df -i:

Inode utilizzati al 100%

Inode utilizzati al 100%

E ora arriva la spiegazione.

Gli inode sono nelle parole di Dennis Ritchie:

Un indice, a causa della struttura un po 'insolita di un filesystem che memorizzava le informazioni di accesso ai file come un semplice elenco su disco, lasciando da parte tutte le informazioni gerarchiche delle directory

e quindi può capitare che per un dato file system ci sia ancora spazio libero per memorizzare file, ma non ci sono inode disponibili per indicizzarli perché ci sono molti file nel sistema e quindi non è possibile crearne di nuovi.

Il punto è che il numero di inode in una partizione EXT4 non può essere modificato (esistono altri tipi di sistemi come JFX o XFS dove questa non è una limitazione perché è dinamico) è un numero fisso che viene calcolato quando la partizione viene creata con mkfs.ext4 in base alla sua dimensione con un rapporto di byte per inode secondo le preferenze situate in /etc/mke2fs.conf.

Durante l'installazione del sistema, è normale utilizzare le preferenze predefinite che includono una relazione inode = 16384, che per partizioni piccole potrebbe essere troppo grande e non creare abbastanza (come nel mio caso). L'unico modo per cambiarlo è creare / formattare la partizione e specificarla con l'opzione -i.

Tuttavia questa non era un'opzione per me, poiché ho già menzionato gli inode sono correlati al numero di file esistenti, quindi usa il seguente script bash trovato in stackoverflow e che è collegato alla pagina che hai menzionato prima per trovare quali erano le directory nella partizione di root con più file:

importante sapere che lo script analizza la directory da cui viene chiamato, cioè come nel mio caso mi interessava analizzare / Bene, prima nel terminal con cui devo muovermi cd / e poi se chiamare lo 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_$$

Che dà il seguente risultato:

Ed ecco i colpevoli!

Ed ecco i colpevoli!

Il numero che compare a sinistra indica il numero di file presenti e il percorso indica la directory associata, una riga sotto compare la directory / var / lib / dpkg / info ma come sempre elimino i miei pacchetti qui non c'è niente da fare.

Tuttavia, se riconosco due problemi, il primo e sebbene il catpura non salga da lì molte altre voci includono le icone Risvegliato, quindi devo spostarli sì o sì, anche questo spiega perché quando l'ho fatto ho potuto aggiornare i pacchetti, dato che ho liberato molti inode dalla partizione di root quando li ho spostati, ma il problema è tornato quando li ho riposizionati.

E in secondo luogo, il successivo numero maggiore di voci è associato alle intestazioni di diversi vecchi kernel, e mi rendo conto che la procedura che uso sempre per eliminare i vecchi kernel non elimina le intestazioni, quello che di solito uso è il seguente, in un terminale scrivo:

dpkg --get-selezioni | immagine grep linux

kernel-rec

che mi mostra i kernel installati e poi utilizzo:

sudo apt-get purge pacchetto

Dove pacchetto è il nome del kernel in questione, ma questo non rimuove le intestazioni associate, quindi faccio:

dpkg --get-selezioni | grep linux

vecchie intestazioni

E poi procedo a rimuovere le vecchie intestazioni, con:

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

E voilà, ma ovviamente c'era anche la questione delle icone Risvegliato quindi decido di spostarli in ~ / .icons e per renderli disponibili per l'intero sistema mi limito a fare un link simbolico in / usr / share / icons, il primo risultato di df -i È con l'eliminazione delle intestazioni e la seconda dopo aver spostato le icone.

Inodes rilasciato dal mucchio!

Inodes rilasciato dal mucchio!

Con questo il problema è risolto, e posso installare / aggiornare pacchetti senza problemi, spero che questo post possa essere di aiuto a qualcuno, oppure serva per riferimento futuro su installazioni in piccole partizioni e demistificare l'argomento così diffuso dai forum della mancanza Di spazio.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Fernando Battista suddetto

    Ciao, usa ubuntu tweak ( http://ubuntu-tweak.com ) è come l'ottimizzazione per Windows, ti aiuta a rimuovere un sacco di spazzatura e nel processo disinstalla i vecchi kernel in modo sicuro, tuttavia, lascia un kernel precedente da avviare, in alcune occasioni l'ultimo kernel non ha funzionato per me e me riuscito ad entrare nel sistema grazie a non cancellarli tutti.

    1.    Rayonante suddetto

      Lo conosco da molto tempo, ma ho sempre preferito fare a modo mio e capire come funzionano le cose, in ogni caso anche senza la coppia di vecchie testate che aveva il problema si sarebbe presentato lo stesso in più o meno tempo Temi di icone, e che alla fine come ho detto NON è un problema di mancanza di spazio ma di inode utilizzati.

  2.   Mauritius suddetto

    Grazie per aver condiviso questo. Finora non ho avuto questo problema, dato che i dischi che uso sono tutti in formato Linux, no windows, dato che non ho quel sistema sul mio computer.

    Quindi, questo lo terrò a mente, nel caso in cui un giorno venissi a vedere questo problema.

    1.    Rayonante suddetto

      Il problema non deriva dall'avere partizioni con Windows (è solo una particolarità del mio caso) ma dall'avere partizioni di root piccole, inferiori a 10Gb dove l'installatore utilizza le opzioni di default di mke2fs (che è quella che formatta le partizioni) e si esce con un piccolo numero di inode per la sua dimensione, e come di solito è quasi la norma, tutte le nostre partizioni sono in EXT4 che imposta questo numero quando viene creato e non è possibile modificarlo in seguito.

  3.   gerard H suddetto

    Come puoi vedere, questo è il tipo di cosa che allontana le persone da Linux e finiscono per tornare a Windows.Come pensi che un utente comune in questa situazione possa risolvere il problema?
    non devi perdere tempo a riparare e configurare questo tipo di cose e sprecare tempo produttivo.
    Miguel de Icaza aveva ragione con quello che ha detto ed è per questo che ha deciso di passare al Mac perché TUTTO FUNZIONA lì, punto.

    1.    vivace suddetto

      Questo è tutto. In OS X tutto funziona alla grande .. In questo momento è inutile spiegare perché l'autore dei commenti al post è successo, quindi per favore, non alimentare questo commento. Finirà in fiamme.

      1.    eliotime3000 suddetto

        Nel mio caso, Debian funziona tutto sul mio PC e risulta che ho usato il DVD come repository aggiuntivo per aggiornare da Squeeze a Wheezy. Quindi chiunque può aggiornare.

    2.    Fabian suddetto

      Ebbene, hai la mente di un utente di Windows.
      GNU / Linux è grande per te.
      saluti

  4.   sig84 suddetto

    questo è interessante.

  5.   Jorge suddetto

    Questo errore è molto frequente quando si installa gentoo su piccoli dischi, così tanti piccoli file sorgente e la partizione esaurisce gli inode anche se è rimasto il 60% di spazio libero. Almeno il manuale lo risolve digitando mke2fs -j -T small / dev / sdaX, probabilmente gira su ubuntu. Prima di giocare con impostazioni strane 😛

    1.    Rayonante suddetto

      Esattamente, come ho detto prima, puoi specificare un rapporto di inode byte con l'opzione -i, ma c'è anche l'opzione che hai menzionato -T usa una delle modalità predefinite nel file di configurazione che chiama /etc/mke2fs.conf, in in questo caso small applicherà un blockize = 1024, inode size = 128 e un rapporto byte-inods = 4096.

  6.   msx suddetto

    Eccellente!
    È il tipico problema che ti divora la testa per molto tempo finché non ti rendi conto da dove proviene.
    +10 per la spiegazione 😀

    1.    Rayonante suddetto

      Come dici tu, ti sei divertito ad ammazzarmi la testa! Grazie mille per il commento, proveniente da qualcuno che sa quanto te è un onore!

  7.   Anthony suddetto

    Eccellente !!, ho imparato qualcos'altro, e mi ha aiutato a recuperare 19 Mb circa rimuovendo una vecchia intestazione, oltre a recuperare alcuni inode. Ora ho più spazio per l'installazione. Dato che sono un principiante di Linux, se pensi che vada bene, ti incoraggio a scrivere un post su come formattare per ottenere il maggior numero di inode e se può essere fatto mantenendo le informazioni sul disco o meno.
    Un saluto e grazie

    1.    Rayonante suddetto

      Come ho accennato in un'indicazione all'inizio della voce, è un problema molto raro ed è associato a piccole partizioni di root (<10 GB) come nel mio caso, con altre dimensioni è improbabile che si verifichi. Ora per quanto riguarda la modifica del numero di inode, come ho accennato anche alla voce, non è possibile farlo senza formattazione nelle partizioni tipo EXT4, quindi non si potrebbe mantenere le informazioni sul disco senza aver fatto un precedente backup, per cambiare il rapporto di byte inode usa l'opzione -i nel comando mke2fs o una delle opzioni associate a -T (piccolo, grande, enorme ecc.).

  8.   Mario suddetto

    Eccellente! L'esposizione del problema, la spiegazione del perché è accaduto, i suoi fondamenti e le fasi della soluzione! Lo chiamo un eccellente contributo! Grazie Rayonant!

  9.   Diana Bedoja suddetto

    Grazie per l'articolo, mi ha aiutato molto. Avevo provato di tutto per ovviare a questo errore e rimuovendo i vecchi header e le loro dipendenze con aptitude sono riuscito a reinstallare i programmi e fare gli aggiornamenti. Grazie!

  10.   Jasco suddetto

    Lo stesso problema è successo a me, non è successo niente e mi ha messo sottosopra ahahah. Nel mio caso, la partizione di root aveva un bel po 'di memoria libera, ma era con il 100% di inode utilizzati! Il punto è che se usi la stessa distribuzione da molto tempo e non rimuovi i vecchi kernel nel tempo, il backlog è terribile. Nel mio caso sono stato in grado di risolvere il problema in un modo simile a come lo hai messo tu, solo che sudo apt-get remove o purge non funzionava per me e la chiave per poter rimuovere quei file del kernel deprecati era usare sudo dpkg –remove e –purge, e uno per uno sono stato in grado di rilasciare gli inode. Tutto quello che impari. Vorrei aver trovato questa voce prima perché avrei risolto la questione prima. Grazie per aver abbozzato un po 'cos'è quello degli inode, non avevo molta idea.
    Ottimo blog, saluti!

  11.   Leone suddetto

    Sei un groso e sebbene sia ingombrante si capisce abbastanza bene. Ho fatto tutto alla lettera ma quello che non posso fare è rimuovere i precedenti intestazioni di Linux, non me lo permette, mi mette
    E: dpkg è stato interrotto, devi eseguire manualmente "sudo dpkg –configure -a" per correggere il problema
    Eseguo quello che mi dice e mi fa
    Impostazione di openshot (1.4.0-1ubuntu1) ...
    Traceback (ultima chiamata più recente):
    File "/ usr / sbin / update-python-modules", riga 478, in
    package.install (py_installed)
    File "/ usr / sbin / update-python-modules", riga 112, in install
    os.symlink (nomefile, percorso dest)
    OSError: [Errno 2] Nessun file o directory di questo tipo
    Errore in sys.excepthook:
    Traceback (ultima chiamata più recente):
    File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", riga 128, in apport_excepthook
    os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'w')
    OSError: [Errno 28] Nessuno spazio rimasto sul dispositivo: '/var/crash/_usr_sbin_update-python-modules.0.crash'

    L'eccezione originale era:
    Traceback (ultima chiamata più recente):
    File "/ usr / sbin / update-python-modules", riga 478, in
    package.install (py_installed)
    File "/ usr / sbin / update-python-modules", riga 112, in install
    os.symlink (nomefile, percorso dest)
    OSError: [Errno 2] Nessun file o directory di questo tipo
    dpkg: errore durante l'elaborazione di openshot (–configure):
    il thread installato lo script di post-installazione ha restituito il codice di uscita di errore 1
    dpkg: errore: impossibile aprire `/ var / lib / dpkg / status 'per scrivere lo stato del database: nessuno spazio rimasto sul dispositivo
    La domanda è: cosa indosso?

  12.   Pablo suddetto

    Vi ringrazio molto! Questo post mi ha aiutato molto.

  13.   fitta suddetto

    ole!!!

    Non solo risolvi un problema complicato, ma imparo (e mi diverto) lungo la strada

  14.   Juan Carlos suddetto

    Ciao. Prima di tutto, grazie per il post ...

    Secondo, sfortunatamente non mi ha aiutato. Ci sono arrivato per un problema di pacchetto rotto, che il sistema non mi permette di risolvere per mancanza di spazio, che in realtà da quanto qui spiegato erano i nodi i.

    Quindi ho provato a eliminare i vecchi kernel, come suggerito, ma il sistema non me lo permette:
    juan @ juan-P29G: ~ $ sudo apt-get purge linux-image-3.2.0-29-generic-pae
    Lettura dell'elenco dei pacchetti ... Fatto
    Creazione dell'albero delle dipendenze
    Lettura delle informazioni sullo stato ... Fatto
    Potresti voler eseguire "apt-get -f install" per correggerlo:
    I seguenti pacchetti hanno dipendenze non soddisfatte:
    tzdata-java: Dipende: tzdata (= 2014i-0ubuntu0.12.04) ma verrà installato 2014e-0ubuntu0.12.04
    E: dipendenze non soddisfatte. Prova "apt-get -f install" senza pacchetti (o specifica una soluzione).

    E quando seguo i consigli del sistema:
    juan @ juan-P29G: ~ $ sudo apt-get -f install
    Lettura dell'elenco dei pacchetti ... Fatto
    Creazione dell'albero delle dipendenze
    Lettura delle informazioni sullo stato ... Fatto
    Correzione delle dipendenze ... Fatto
    Verranno installati i seguenti pacchetti extra:
    tzdata
    Verranno aggiornati i seguenti pacchetti:
    tzdata
    1 aggiornato, 0 verrà installato, 0 da rimuovere e 23 non aggiornato.
    1 non completamente installato o rimosso.
    0 B / 461 kB di file devono essere scaricati.
    Dopo questa operazione verranno rilasciati 31,7 kB.
    Vuoi continuare [S / n]? S
    Preconfigurazione dei pacchetti ...
    (Lettura del database ... 893468 file o directory attualmente installati.)
    Preparazione alla sostituzione di tzdata 2014e-0ubuntu0.12.04 (utilizzando… / tzdata_2014i-0ubuntu0.12.04_all.deb)…
    Disimballaggio del sostituto tzdata ...
    dpkg: errore durante l'elaborazione di /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb (–unpack):
    Impossibile eseguire il backup del collegamento simbolico per `./usr/share/zoneinfo/posix/America/Santo_Domingo ': Nessuno spazio lasciato sul dispositivo
    Non è stato scritto un rapporto "apport" perché il messaggio di errore indica che l'errore è pieno sul disco
    Si sono verificati errori durante l'elaborazione:
    /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb
    E: Sub-process / usr / bin / dpkg ha restituito un codice di errore (1)

    Un circolo vizioso ... Comunque, vedrò cosa posso fare.

    Saluti.

  15.   Juan Carlos suddetto

    Ciao di nuovo ... so come rompere il circolo vizioso.

    Rimuoverò l'immagine del più vecchio dei kernel con questo comando:
    sudo dpkg --remove linux-image-3.2.0-29-generic-pae

    Con ciò ottengo 4389 i-node, sufficienti per riparare il pacchetto danneggiato, e quindi rimuovere gli header dal vecchio kernel come indicato nel post.

    E ora recupererò più i-node rimuovendo un mucchio di vecchi kernel ...

    Grazie e saluti, Juan Carlos.

  16.   anonimo suddetto

    Non mi ha permesso di eliminare le intestazioni

    Ho digitato
    sudo nautilus

    E sono andato alla cartella / usr / src
    Lì ho visto i file "header" e li ho cancellati
    Detto ciò, mi ha già permesso di effettuare l'ordine di rimozione automatica

  17.   anonimo suddetto

    Grazie!! il post potrebbe essere un po 'vecchio ma è comunque molto utile, problema risolto con gli inode

  18.   Luis suddetto

    Rayonant: una spiegazione esemplare.
    Nonostante, nel mio caso, ho dovuto espandere la partizione (con Gparted), il tuo post mi ha aiutato a capire il problema. E dopo aver seguito il tuo metodo, sono passato dal 90% degli inode occupati (dopo aver espanso la partizione), al solo 28%.
    Grazie mille. Lo userò d'ora in poi per eliminare i vecchi kernel (e gli header).
    Grazie anche a Juan Carlos (ho avuto lo stesso problema).
    Un abbraccio.

  19.   Ilario suddetto

    Post interessante,
    Nel mio caso sono passato dal 100% di utilizzo al 9%

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

    in seguito ho scoperto che le tempeste ntopng mi stavano toccando il naso, le ho eliminate e ...

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

    Tachán !!!

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

    Grazie