Auf dem Root-Laufwerk ist nicht mehr genügend Speicherplatz vorhanden. Wie kann ich Speicherplatz freigeben?

35

Ich verwende Ubuntu 11.04 und möchte Speicherplatz in meinem überlasteten Stammverzeichnis freigeben. Ich möchte insbesondere den Pfad für die Installation von Anwendungen ändern (sie werden direkt auf dem Root-Laufwerk installiert).

Eine andere Überlegung ist, dass ich an einem MySQL-Datenbankserver arbeite. Der Server ist im Stammverzeichnis selbst installiert, sodass ich nicht riskieren möchte, Daten zu verlieren.

Bitte geben Sie mir einige Tipps, um dieses Problem zu lösen.

Rihan
quelle

Antworten:

36

Vor kurzem sah ich mich einer ähnlichen Situation gegenüber. Es wurden zu viele Anwendungen installiert, und sie haben damit begonnen, meinen Root-Mount-Speicherplatz zu verwenden. Ich liste einige Schritte auf, denen ich gefolgt bin, und hoffe, dass Sie dasselbe auch verwenden könnten.

  1. Bereinigen Sie den apt-get-Cache. Der folgende Befehl entfernt alle heruntergeladenen deb-Dateien aus dem apt-get-Cache-Verzeichnis.

    Führen Sie diesen Befehl aus: sudo apt-get clean

  2. Verschieben Sie den Startpunkt auf ein anderes Laufwerk . Zuvor befand sich mein Home-Ordner auf dem Root-Laufwerk. Also habe ich meinen Home-Ordner auf ein separates Laufwerk verschoben. Dies hat mir geholfen, viel Stress vom Root-Mount zu lösen, da die meisten Anwendungen ihre Daten in / home / user_name / folder speichern. Lesen Sie, wie Sie den Basisordner auf ein separates Laufwerk verschieben.

  3. Erhöhen Sie die Größe der Root-Partition Ich weiß, es ist sehr offensichtliche Antwort. Aber glauben Sie mir, unsere Daten müssen sich im Laufe der Zeit ändern. Ich dachte, 20 GB / Root-Mount würden ausreichen, aber innerhalb eines Jahres habe ich meine Root-Mount-Größe geändert und auf 50 GB erhöht.

Amey Jah
quelle
8
sudo apt-get clean hat mehr Speicherplatz als erwartet freigegeben, +1
BTK
Beachten Sie, dass apt-get cleanauch installierte Pakete entfernt werden. Sie können diese für den Fall aufbewahren, dass ein Upgrade fehlschlägt.
timss
Ich habe meinen Cache aufgeräumt und 10 GB aufgeräumt! +1
Numeri sagt Reinstate Monica
28

Ich habe 3,5 GB erfolgreich gelöscht, indem ich alte Header und Bilder mit dem folgenden Befehl entfernt habe:

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

Sie können überprüfen, welche Pakete gelöscht werden, indem Sie den ersten Teil des Befehls ausführen:

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

Referenz

Homebrand
quelle
Andere Tipps haben nicht geholfen, aber das hat mich um 5G gerettet. Vielen Dank.
Baltasvejas
Die Option -yim Befehl apt-get ist nicht wirklich erforderlich. Wenn Sie es weglassen, werden Sie von apt-get (nur einmal) gefragt, ob alle über die Pipeline übertragenen Pakete entfernt werden sollen. Imho es ist besser, nicht zu verwenden -y, es gibt Ihnen eine weitere Möglichkeit zu überprüfen (neben dem zweiten oben genannten Befehl). Für mich hat dies 15GB auf der Root-Partition freigesetzt!
Boris Däppen
2
Der Befehl hat 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 versucht, die aktuell installierte Kernel-Version in meinem System zu entfernen. Achten Sie darauf, Ihr System nicht zu booten.
Antony
@ Anthony yaikes! Ich wollte es gleich versuchen. Wie kann ich überprüfen, welche Dateien gelöscht werden dürfen?
Sonic Soul
2
@ SonicSoul Schließlich habe ich eine der folgenden Antworten ( askubuntu.com/a/778442/333806 ) gegeben. Grundsätzlich lief uname -r, um den aktuellen Kernel zu finden und achtete darauf, ihn nicht zu entfernen. Wenn der Befehl homebrandzum Überprüfen, welche Pakete gelöscht werden, nicht den aktuellen Kernel anzeigt, sollten Sie den von ihm genannten Löschbefehl sicher ausführen.
Antony
22

Verwenden dpkg-querySie diese Option , um die größten Pakete zu finden und diejenigen zu entfernen, die Sie nicht mehr benötigen ( Quelle ):

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}'
michaeljoseph
quelle
1
Dies ist ein wirklich nützlicher Einzeiler. Perfekt für eine schnelle Zusammenfassung der größten Installationspakete. Komm zu meinen Punktedateien!
Arainone
Sie können dies mitwajig 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.
Shantanu
quelle
19
Sie geben keine Erklärungen. Wenn jemand nur Ihren Code kopieren / einfügen würde, würde das System ohne Warnung herunterfahren und möglicherweise einen Datenverlust verursachen. Bitte geben Sie keine Befehle an, ohne zu erklären, was sie tun. -1
Jo-Erlend Schinstad
9
Warum muss das Dateisystem überprüft werden?
Nathan Osman
10

Durch das Entfernen alter Kernelversionen (wie bereits von Homebrand vorgeschlagen ) kann eine angemessene Menge an Speicherplatz freigesetzt werden, wenn Sie dies noch nicht getan haben.

Es gibt verschiedene Möglichkeiten, die alten Kernelversionen zu entfernen. Eine Reihe verschiedener Optionen finden Sie in den Antworten unter: Wie entferne ich alte Kernelversionen, um das Startmenü zu bereinigen?

Meine bevorzugte Methode ist meistens diese Antwort von der Rückgabe, wo sie in ziemlich einfache, verständliche Schritte unterteilt ist:

Öffne das Terminal und überprüfe deinen aktuellen Kernel:

uname -r

ENTFERNEN SIE DIESEN KERN NICHT!

Geben Sie anschließend den folgenden Befehl ein, um alle auf Ihrem System installierten Kernel anzuzeigen / aufzulisten.

dpkg --list | grep linux-image

Finden Sie alle Kernel, die niedriger sind als Ihr aktueller Kernel. Wenn Sie wissen, welchen Kernel Sie entfernen müssen, fahren Sie unten fort, um ihn zu entfernen.

Führen Sie den folgenden Befehl aus, um den ausgewählten Kernel zu entfernen.

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

Die Antwort lautet dann 'update-grub2', wenn Sie mit dem Löschen fertig sind, was wahrscheinlich veraltet ist: sudo update-grubSollte ab Ubuntu 14.04 ausreichen. Sie sagen dann auch, dass Sie Ihr System neu starten sollen (dies scheint so zu sein, dass Sie das aufgeräumte Startmenü sehen können), sodass dies in diesem Fall nicht erforderlich ist.

Das Grub-Bootloader-Menü dient dazu, alle älteren Kernel-Versionen auf der Hauptseite anzuzeigen, sie werden jedoch jetzt hinter einem Untermenü angezeigt. Es ist viel ordentlicher, aber ein Ubuntu / Linux-Neuling merkt möglicherweise nicht, dass sie dort Platz beanspruchen.

Entfernen Sie, wie empfohlen, nicht den aktuellen Kernel. Es ist auch ratsam, die vorherige Kernelversion beizubehalten, nur für den Fall, dass Sie zu dieser zurückkehren müssen.

Es gibt schnellere Möglichkeiten, dies zu tun, aber ich bevorzuge die Einfachheit dieser Methode hauptsächlich, weil ich jeden Befehl auf dem Weg verstehen kann:

"Welche Kernel-Version verwende ich? Welche Kernel-Versionen habe ich? Okay, bereinige diese ."

Spülen, wiederholen, den freigewordenen Platz bewundern.

Es ist ziemlich einfach, den Namen des bestimmten älteren Kernels, den Sie entfernen möchten, aus den Ergebnissen dpkg --list | grep linux-imageim Terminal zu sudo apt-get purgekopieren und den kopierten Namen dann zu verwenden und einzufügen.

Wenn Sie 3 oder 4 ältere Kernel entfernen, wird in der Regel etwa ein GB Speicherplatz auf Ihrem Root-Laufwerk frei.

pHeLiOn
quelle
1
Zusätzlich zu linux-image können Sie auch linux-
headers suchen
8

Wenn ich mehr Speicherplatz auf Servern freimachen muss, verwende ich diesen Befehl:

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

Es findet alle Dateien, die größer als 50 MB sind, und " du -h" erstellt eine bessere Liste von Dateien und "sort -n"" eine After-Pipe-Make-Liste, die numerisch nach Dateigröße sortiert ist.

zorbon.cz
quelle
Je nachdem, wie groß Ihr System ist, kann dies einige Zeit dauern. Ich brauchte 15 Minuten für ungefähr 500 GB auf einer Festplatte
Gabriel Fair,
7

Befolgen Sie die Anweisungen auf der Ubuntu-Community-Dokumenten ich eine riesige Papierkorbdatei entdeckt - es sah aus wie ein Backup von /var/log/syslog.1, vermutlich hat etwas Unmengen von Ausgaben an syslog gesendet ...

Der Befehl, der es gefunden hat, war:

sudo find / -size +1G

Und dann ist jede große Datei in einem Ordner namens .Trashwahrscheinlich gut zu löschen ...

hwjp
quelle
5

Hier ist ein Skript, mit dem ich Speicherplatz auf der Root-Partition freigebe

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
}
cmak.fr
quelle
Bearbeiten: Neue 2 Zeilen alten Kernel-Reiniger
cmak.fr
Vielen Dank! "Alte Protokolle drehen und löschen" räumt mehrere Gigs auf meinem Laufwerk auf.
Samstag,
Nett. Entwickler möchten möglicherweise auch ihre nicht verwendeten Docker-Images entfernen :docker system prune
Pablo A
@Pablo A können sie schauen /var/crash/*.crashzu
cmak.fr
Da Sie sudodie Funktion aufrufen müssen, erscheint diese sudoinnerhalb der Funktion redundant. Auch vacuum-time=1sfunktioniert möglicherweise nicht immer, aber ich bin mir nicht sicher, weil ich stattdessen die Vakuumgröße
WinEunuuchs2Unix
2

In Ubuntu kann jeder Ordner ein eigenes Dateisystem haben. Das heißt, Sie können jeden Ordner auf eine eigene Partition, eine andere Festplatte oder sogar in ein Remote-Netzwerk verschieben. Dies ist besonders bei Heimverzeichnissen beliebt, da Sie Ubuntu neu installieren können, ohne Ihre persönlichen Einstellungen zu ändern oder Dateien zu verlieren. Es ist auch in Netzwerken beliebt, in denen Benutzer sich auf verschiedenen Computern anmelden und dennoch ihre persönlichen Einstellungen und Dateien abrufen können sollten. Aber es ist in vielen verschiedenen Fällen nützlich, wie bei Ihnen.

Anwendungen werden nicht in einem bestimmten Ordner installiert, wie Sie anscheinend vorschlagen. Verschiedene Teile der Anwendung befinden sich in verschiedenen Teilen des Dateisystems. Das Hauptprogramm wird normalerweise in / usr / bin abgelegt, während Konfigurationsdateien beispielsweise in / etc abgelegt werden. In Ihrem Fall, MySQL, befinden sich die Datenbanken selbst irgendwo in / var. Ich denke, / var / mysql.

Da / usr und / var beide Verzeichnisse im Root-Dateisystem sind, wird der Speicherplatz des Root-Dateisystems verwendet. Aber wie gesagt, Sie können sie in verschiedene Dateisysteme verschieben. Im Fall von MySQL können Sie konfigurieren, wo Datenbanken gespeichert werden. Sie können Datenbanken beispielsweise problemlos nach /home/username/.mysql/databases verschieben.

Jo-Erlend Schinstad
quelle
1

Sie können den Pfad nicht ändern, in dem der Paketmanager Anwendungen installiert. Die meisten Anwendungsdateien werden in gespeichert /usr. Wenn Sie Speicherplatz auf der Root-Partition wiederherstellen möchten, ist das Verschieben /usrauf eine andere Partition eine mögliche Lösung.

Aus Kommentaren:

  • Behalten Sie die Berechtigungen beim Kopieren bei, dh verwenden Sie besser die Befehlszeile, wenn Sie sich nicht sicher sind, was Ihr Dateimanager tun wird.

  • Der richtige Weg dazu ist, ein neues Dateisystem in / usr einzubinden oder zu verwenden mount --bind. Es ist nicht klar, wie gut ein Symlink funktionieren würde.

Jan
quelle
Vorsicht bei Umzug / usr. Verwenden Sie den Befehl cp, um den Ordner usr mit derselben Berechtigung zu kopieren. Löschen Sie dann den ursprünglichen Ordner / usr und erstellen Sie einen Link zum Ordner usr auf /.
Shantanu
1
Es sollte einen Einhängepunkt haben. Kein Link.
Jo-Erlend Schinstad
Kleiner Hinweis: Viele Anwendungen installieren auch Binärdateien und Anwendungsdaten in /opt.
Nathan Osman
@ George-Edison Nun, einige Anwendungen installieren Sachen /optgegen "die Regeln".
Jan
1

Wenn Sie viele separate Dateisysteme haben, kann sich der folgende Trick als nützlich erweisen: Mount / another time, aber diesmal unter / mnt. Jetzt können Sie nach großen oder vielen Dateien suchen, ohne falsche Dateisysteme zu durchlaufen.

Es kann Ihnen auch dabei helfen, die Dateien zu finden, die sich unter einem anderen Mount befinden.

Steviethecat
quelle
0

Wenn Sie einen MSSQL-Datenbankserver installiert haben, kann dies Ihren Speicher verschlingen. Führen Sie NCurses Disk Usage aus

$ sudo ncdu / 

So überprüfen Sie, welche Ordner und Dateien den maximalen Speicherplatz beanspruchen Die MSSQL-Daten werden in der Regel auf gespeichert

/var/opt/mssql/backup/
Yogesh
quelle
Die Frage besagt, dass die Datenbank bleiben muss.
Stephen Rauch
Die Frage bezog sich auf MySQL-Datenbank. Wenn er also die MsSQL-Datenbankdaten entfernen soll, dann scheint das eine ziemlich faire Antwort zu sein.
Yogesh
Könnte nützlich sein, die -xOption
Pablo A