Zum Inhalt

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 nach groß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 Reboot des Pis 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 externe Platte nicht angeschlossen war. Also einmal die gesamten Ordner und Dateien löschen und den Pi neu starten und alles läuft wieder wie gehabt.

rm -rf /mnt/backup/ordner

Prüfung ob Mount Point vorhanden

Mit einem kleinen Code Schnipsel kannst du prüfen, ob eine externe Platte eingehängt wurde oder nicht. Ein Beispiel findest du in meinem Codeberg Repository

Codeberg

Zum imagebackup Skript

...

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.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj

Source

Photo by Patrick Robert Doyle on Unsplash