L'unità root sta esaurendo lo spazio su disco. Come posso liberare spazio?


35

Sto usando Ubuntu 11.04 e voglio liberare spazio nella mia directory principale, che è sovraccarica. In particolare, voglio cambiare il percorso utilizzato per l'installazione delle applicazioni (vengono installate direttamente sull'unità root).

Un'altra considerazione è che sto lavorando su un server di database MySQL. Il server è installato nella directory principale stessa, quindi non voglio rischiare di perdere alcun dato.

Per favore, dammi alcuni consigli per aiutarti a risolvere questo problema.

Risposte:


36

Di recente ho affrontato una situazione simile. Sono state installate troppe applicazioni e hanno iniziato a utilizzare il mio spazio di montaggio principale. Sto elencando alcuni passaggi che ho seguito e spero che tu possa usare lo stesso.

  1. Pulisci la cache di apt-get. Il comando seguente rimuoverà tutti i file deb scaricati dalla directory della cache di apt-get.

    Esegui questo comando: sudo apt-get clean

  2. Sposta / punto di montaggio home su un'altra unità . In precedenza, la mia cartella principale era situata sull'unità root. Quindi ho spostato la mia cartella principale in un'unità separata. Questo mi ha aiutato a liberare molto stress dal root mount perché la maggior parte delle applicazioni archivia i propri dati nella cartella / home / user_name /. Leggi come spostare la cartella principale in un'unità separata.

  3. Aumenta le dimensioni della partizione di root So che è una risposta molto ovvia. Ma credimi, i nostri dati hanno bisogno di cambiamenti nel tempo. Pensavo che sarebbero bastati 20 GB / root mount ma in un anno ho ridimensionato il mio mount root e aumentato a 50 GB.


8
sudo apt-get clean ha liberato più spazio del previsto, +1
proposito

Attenzione che apt-get cleanrimuove anche i pacchetti installati. Potresti voler conservare quelli nel caso in cui un aggiornamento fallisca.
Timss,

Ho pulito la cache e ho cancellato 10 GB! +1
Numeri dice Ripristina Monica il

28

Ho cancellato con successo 3,5 GB rimuovendo vecchie intestazioni e immagini, usando il seguente comando:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

Puoi controllare quali pacchetti verranno eliminati eseguendo la prima parte del comando:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Riferimento


Altri suggerimenti non sono stati d'aiuto, ma questo mi ha permesso di risparmiare circa 5G. Grazie.
baltasvejas,

L'opzione -ynel comando apt-get non è davvero necessaria. Se lo ometti, apt-get ti chiederà (solo una volta) se tutti i pacchetti pipati devono essere rimossi. Imho è meglio non usarlo -y, ti dà un'altra possibilità di controllare (oltre al secondo comando menzionato sopra). Per me questo ha liberato 15 GB sulla partizione di root!
Boris Däppen,

2
Il comando ha dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge provato a rimuovere la versione del kernel attualmente installata nel mio sistema. Fare attenzione a non rendere il sistema non avviabile.
Antonio

@Antony yaikes! stavo per provare questo. come posso verificare quali sono ok per eliminare?
Sonic Soul,

2
@SonicSoul Alla fine ho finito per fare ciò che una delle risposte di seguito ( askubuntu.com/a/778442/333806 ) suggerisce. Fondamentalmente, corse uname -ra trovare il kernel corrente e si prese cura di non rimuoverlo. Se il comando fornito da homebrandper verificare quali pacchetti verranno eliminati non mostra il kernel corrente, allora dovresti essere sicuro di eseguire il comando purge menzionato da lui.
Antony,

22

Usa dpkg-queryper trovare i pacchetti più grandi e rimuovere quelli che non ti servono più ( fonte ):

dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'

1
Ora questo è un one-liner davvero utile. Perfetto per un breve riepilogo dei più grandi pacchetti di installazione. Vieni ai miei dotfile!
Arainone,

Puoi ottenerlo conwajig sizes
Pablo A

13
sudo apt autoclean  # clean /var/cache/apt/archives folder which save packages while install.
sudo apt autoremove # this command remove unused packages.

sudo shutdown -rf   # it will restart your PC immediately and check filesystem in next boot.

19
Non fornisci spiegazioni. Se qualcuno dovesse semplicemente copiare / incollare il codice, il sistema si spegnerebbe senza preavviso, causando probabilmente una perdita di dati. Si prega di non fornire comandi senza alcuna spiegazione di ciò che fanno. -1
Jo-Erlend Schinstad,

9
Perché è necessario controllare il filesystem?
Nathan Osman,

10

Rimuovere le vecchie versioni del kernel (come suggerito già da homebrand ) può liberare una discreta quantità di spazio se non si è ancora in grado di farlo.

Esistono diversi modi per rimuovere le vecchie versioni del kernel e una serie di diverse opzioni è disponibile nelle risposte pubblicate su: Come rimuovo le vecchie versioni del kernel per ripulire il menu di avvio?

Il mio metodo preferito è principalmente questa risposta da tornanti in cui è suddiviso in passaggi comprensibili abbastanza semplici:

Apri il terminale e controlla il tuo kernel corrente:

uname -r

NON RIMUOVERE QUESTO KERNEL!

Quindi, digita il comando seguente per visualizzare / elencare tutti i kernel installati sul tuo sistema.

dpkg --list | grep linux-image

Trova tutti i kernel che sono inferiori al tuo kernel corrente. Quando sai quale kernel rimuovere, continua sotto per rimuoverlo.

Eseguire il comando seguente per rimuovere il kernel selezionato.

sudo apt-get purge linux-image-x.x.x.x-generic

La risposta quindi dice "update-grub2" quando hai finito di eliminare, che probabilmente non sarà aggiornato ora: sudo update-grubdovrebbe bastare per Ubuntu 14.04 in poi. Poi dicono anche 'Riavvia il sistema' (che sembra essere in modo da poter vedere il menu di avvio pulito), quindi in questo caso non è necessario.

Il menu di bootloader grub usato per mostrare tutte le versioni del kernel più vecchie nella pagina principale, ma ora sono posizionate fuori da un sottomenu. È molto più ordinato ma un nuovo arrivato in Ubuntu / Linux potrebbe non essere consapevole del fatto che sono lì a occupare spazio.

Come suggerito, non rimuovere il kernel corrente ed è anche consigliabile mantenere anche la versione del kernel precedente, nel caso in cui sia necessario tornare a quello precedente.

Ci sono modi più veloci per farlo, ma preferisco la semplicità di questo metodo principalmente perché posso capire ogni comando lungo la strada:

"Quello che kernel versione sto utilizzando? Cosa kernel versioni devo? Va bene, spurgo che uno".

Risciacqua, ripeti, ammira lo spazio che hai liberato.

È abbastanza facile copiare il nome del kernel più vecchio specifico che si desidera rimuovere dai risultati che dpkg --list | grep linux-imageti dà nel terminale, quindi usare sudo apt-get purgee incollare il nome copiato.

La rimozione di 3 o 4 kernel più vecchi di solito libera circa un GB di spazio nell'unità root.


1
Oltre all'immagine linux, puoi anche eseguire grep per ed eliminare le intestazioni linux
kdopen,

8

Quando ho bisogno di fare più spazio libero sui server, utilizzo questo comando:

find / -type f -size +50M -exec du -h {} \; | sort -n

Trova tutti i file più grandi di 50 MB e " du -h" crea un elenco migliore di file e "sort -n"dopo aver creato l'elenco numericamente ordinato per dimensione del file.


A seconda di quanto è grande il tuo sistema, questo può richiedere del tempo. Mi ci sono voluti 15 minuti per circa 500 GB su un HDD
Gabriel Fair

7

Seguendo le istruzioni sui documenti della community di Ubuntu ho scoperto un enorme file cestino: sembrava un backup di /var/log/syslog.1, presumibilmente qualcosa stava riversando un sacco di output su syslog ...

Il comando che lo ha trovato è stato:

sudo find / -size +1G

E quindi qualsiasi file di grandi dimensioni in una cartella chiamata .Trashè probabilmente buono per eliminare ...


5

Ecco uno script che eseguo per liberare spazio sulla partizione di root

function myclean {
    ## Show free space
    df -Th | grep -v fs
    # Will need English output for processing
    LANG=en_GB.UTF-8

    ## Clean apt cache
    apt-get update
    apt-get -f install
    apt-get -y autoremove
    apt-get clean

    ## Remove old versions of snap packages
    snap list --all | while read snapname ver rev trk pub notes; do
        if [[ $notes = *disabled* ]]; then
            snap remove "$snapname" --revision="$rev"
        fi
    done
    ## Set snap versions retain settings
    if [[ $(snap get system refresh.retain) -ne 2 ]]; then snap set system refresh.retain=2; fi
    rm -f /var/lib/snapd/cache/*

    ## Remove old versions of Linux Kernel
    # This one-liner is deprecated since 18.04
    # dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
    # New 2 lines to remove old kernels
    dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge
    dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge

    ## Rotate and delete old logs
    /etc/cron.daily/logrotate
    find /var/log -type f -iname *.gz -delete
    sudo journalctl --rotate
    sudo journalctl --vacuum-time=1s

    ## Show free space
    df -Th | grep -v fs
}

Modifica: nuovo detergente per kernel a 2 righe
cmak.fr

Grazie! "Ruota ed elimina i vecchi registri" cancella diversi concerti sul mio disco.
SaTa,

Bello. Gli sviluppatori potrebbero anche voler rimuovere le loro immagini docker inutilizzate :docker system prune
Pablo A

@Pablo Un essi possono guardare al /var/crash/*.crashtroppo
cmak.fr

Dal momento che è necessario sudochiamare la funzione, sudoall'interno della funzione sembra ridondante. Inoltre, vacuum-time=1spotrebbe non funzionare sempre, ma non sono sicuro perché utilizzo invece la dimensione del vuoto: forum.manjaro.org/t/…
WinEunuuchs2Unix

2

In Ubuntu, ogni cartella può avere il proprio filesystem. Ciò significa che è possibile spostare qualsiasi cartella sulla propria partizione, su un altro disco o anche su una rete remota. Questo è particolarmente popolare per le home directory, poiché ciò significa che è possibile reinstallare Ubuntu senza modificare le impostazioni personali o perdere file. È anche popolare nelle reti in cui gli utenti dovrebbero essere in grado di accedere a macchine diverse e ottenere comunque le proprie impostazioni e file personali. Ma è utile in molti casi diversi, come il tuo.

Le applicazioni non sono installate in una cartella specifica, come sembra suggerire. Parti diverse dell'applicazione sono collocate in parti diverse del filesystem. Il programma principale è generalmente inserito in / usr / bin, mentre i file di configurazione sono collocati in / etc, per esempio. Nel tuo caso, MySQL, i database stessi sono collocati da qualche parte in / var. Penso / var / mysql.

Poiché / usr e / var sono entrambe directory nel filesystem di root, useranno lo spazio del filesystem di root. Ma come ho detto, puoi spostarli in diversi filesystem. Nel caso di MySQL, è possibile configurare dove sono archiviati i database. Ad esempio, è possibile spostare facilmente i database in /home/username/.mysql/database.


1

Non è possibile modificare il percorso in cui le applicazioni di installazione del gestore pacchetti. La maggior parte dei file dell'applicazione viene salvata in /usr. Se si desidera recuperare spazio sulla partizione radice, è possibile passare /usra una partizione diversa.

Dai commenti:

  • Conserva le autorizzazioni durante la copia, vale a dire meglio usare la riga di comando se non sei sicuro di cosa farà il tuo file manager.

  • Il modo giusto per farlo è montare un nuovo filesystem su / usr o usarlo mount --bind. Non è chiaro quanto bene funzionerebbe un collegamento simbolico.


attento a move / usr. usa il comando cp per copiare la cartella usr con la stessa autorizzazione. quindi eliminare la cartella / usr originale e creare un collegamento della cartella usr su /.
shantanu,

1
Dovrebbe avere un mount point. Non un link.
Jo-Erlend Schinstad,

Piccola nota: molte applicazioni installano anche binari e dati dell'applicazione /opt.
Nathan Osman,

@ george-edison Bene, alcune applicazioni installano cose /optcontro "le regole".
Jan

1

Se hai molti filesystem separati, il seguente trucco potrebbe rivelarsi utile: Monta / un'altra volta, ma questa volta sotto / mnt. Ora è possibile eseguire tutte le ricerche di file di grandi dimensioni o molti, senza attraversare file system errati.

Può anche aiutarti a trovare i file nascosti sotto un altro mount.



0

Se hai installato il server database mssql, questo può consumare la tua memoria. Esegui l' utilizzo del disco NCurses

$ sudo ncdu / 

Per verificare quali cartelle e file occupano la memoria massima. I dati mssql sono generalmente memorizzati

/var/opt/mssql/backup/

La domanda afferma che il database deve rimanere.
Stephen Rauch,

La domanda menzionava il database MySql, quindi se deve rimuovere i dati del database MsSQL, allora credo che sia una risposta abbastanza giusta.
Yogesh,

Potrebbe essere utile l' -xopzione
Pablo A
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.