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:
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:
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:
#!/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:
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
Ebbene, hai la mente di un utente di Windows.
GNU / Linux è grande per te.
saluti
questo è interessante.
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 😛
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.
Eccellente!
È il tipico problema che ti divora la testa per molto tempo finché non ti rendi conto da dove proviene.
+10 per la spiegazione 😀
Come dici tu, ti sei divertito ad ammazzarmi la testa! Grazie mille per il commento, proveniente da qualcuno che sa quanto te è un onore!
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
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.).
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!
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!
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!
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?
Vi ringrazio molto! Questo post mi ha aiutato molto.
ole!!!
Non solo risolvi un problema complicato, ma imparo (e mi diverto) lungo la strada
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.
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.
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
Grazie!! il post potrebbe essere un po 'vecchio ma è comunque molto utile, problema risolto con gli inode
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.
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