Raspberry Pi – /dev/root auf 100%

Es gab bei meinem Raspberry Pi kürzlich ein kleines Problem. Alle Dienste sind stehen geblieben.
Es gab keinen Platz mehr auf der SD-Karte. Die Partition /dev/root 100% war randvoll.

Die Analyse der SD-Karte ergab folgendes Bild:

$ sudo df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G   29G     0 100% /
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           768M   29M  740M   4% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock

...

Wie unschwer zu erkennen ist, gibt es keinen Platz mehr auf /dev/root. Damit hat kein Dienst mehr die Möglichkeit irgendwelche Files, wie z.B. Logfiles, auf die SD-Karte zu schreiben und dadurch wurde der gesamte Pi einfach gestoppt.

Was war passiert?

Ein mount und rsync-Prozess haben nicht richtig funktioniert. Es wurde eine Backup-Festplatte nicht eingebunden und der Sicherungsprozess via rsync ist trotzdem gelaufen.

Es wurden also alle zu sichernden Daten auf die SD-Karte des Raspberry Pis geschrieben, anstatt auf das externe Speichermedium.

Die Zuordnung zu diesem Problem ist ein wenig kniffelig. Da es sich bei dem Mount-Point lediglich um einen Ordner auf der SD-Karte handelt, wird er mit df nicht aufgeführt.

Du kannst z.B mit find in Verzeichnissen nachgroßen Dateien suchen und diese manuell löschen.

find /var/log -type f -size +50000k| xargs ls -lahS

Du kannst auch nach großen Dateien suchen und diese ausgeben lassen.

find /var/log -type f -size +10000k

Eine Suche nach den größten Dateien in einem Ordner funktioniert mit:

du -ah --time /var/log | sort -n -r | head -n 10

Die Zahl 10 gibt hier die Ausgabe der Treffer an. Möchtest du mehr haben, erhöhe die Zahl.

Die Suche nach großen Dateien kann mit unter mühsam sein.

Deshalb lässt sich die Ausgabe zur besseren Analyse in eine txt-Datei umleiten. Dazu wird einfach am Ende des Befehls noch das angehängt

... > ~/output.txt

Mögliche Verzeichnisse für große Dateien:

  • /var/log
  • /mnt/…
  • /media/…
  • /home/benutzername

Temporäre Verzeichnisse werden bei einem Rebbot des Pi automatisch gelöscht, du brauchst sie deshalb nicht manuell zu prüfen. Ein Neustart sollte dei Aufgabe für dich erledigen.

Die Lösung

Die Lösung war denkbar einfach. Ein Blick in den Mount-Point des externen Speichers ergab, dass dort alle Daten vorhanden waren, obwohl die extenre Platte nicht angeschlossen war. Also einmal die gesamten Ordner und Dateien löschen und den Pi neustarten und alles läuft wieder wie gehabt.

rm -rf /mnt/backup/ordner

Prüfung ob Mount Point vorhanden

Mit einem kleinen Code Schnippsel kannst du prüfen, ob eine externe Platte eingehängt wurde oder nicht. Ein Beispiel findest du in meinem Codeberg Repository
https://codeberg.org/strobelstefan.org/imagebackup/src/branch/main/imagebackup.sh

...

if [ "$(findmnt ${mountpoint})" ] ;
    then
        echo $(date +%Y-%m-%d_%H-%M-%S) " - Mount point accessible by your "$HOSTNAME >> ${LOGFILE}
    else
        echo $(date +%Y-%m-%d_%H-%M-%S) " - Mount point was not accessible, try to mount it now as defined in your /etc/fstab" >> ${LOGFILE}

    #This command mounts all storages defined in /etc/fstab
    mount -a

    if [ $? != 0 ]
        then
            echo $(date +%Y-%m-%d_%H-%M-%S) " - Mount of storage in first try successfully completed" >> ${LOGFILE}
        sleep 5
            mount -a
        if [ $? != 0 ]
        then
            echo $(date +%Y-%m-%d_%H-%M-%S) " - Backup FAILED! Was not able to mount your storage device. Stop backup process. You have to check it manually." >> ${LOGFILE}
            echo "Sent backup status via e-mail" | mutt ${EMAIL} -a ${LOGFILE} -s $HOSTNAME" - Backup FAILED" >> ${LOGFILE}
        exit
        fi
    fi
fi


Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


Photo by Patrick Robert Doyle on Unsplash

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert