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
...
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.
Follow Me❗️
Source
Photo by Patrick Robert Doyle on Unsplash