Hallo Stefan,
On Sat, Feb 19, 2022 at 23:46:18 +0100, Stefan Engelhardt wrote:
Ich habe noch den Tipp bekommen, die Inodes könnten aufgebraucht sein. Habe ich mit "df -i " geprüft. Alle gemounteten Partitionen haben 1% der Inodes genutzt. Ist also noch genug Luft nach oben.
Habt ihr noch weitere Ideen warum das nicht richtig berechnet wird? Danke wieder im voraus.
Es gibt noch einen weiteren Grund dafuer, dass die Ausgaben von "du" und "df" stark voneinander abweichen koennen. Hier mal ein Beispiel in meinem Mini-Linux mit einem tmpfs:
tmpfs mounten: # mount -t tmpfs testfs /mnt
Ein paar Megabyte Daten reinschreiben: # cat /bin/links /bin/links > /mnt/foo # df -h /mnt Filesystem Size Used Available Use% Mounted on testfs 503.8M 9.6M 494.1M 2% /mnt
Datei /mnt/foo ueber einen Filedeskriptor durch einen Prozess offen halten: # sleep 86400 < /mnt/foo &
Datei /mnt/foo loeschen: # rm /mnt/foo
Aus du-Sicht ist das Dateisystem jetzt leer: # du -sh /mnt 0 /mnt
Aber df ist anderer Meinung: # df -h /mnt Filesystem Size Used Available Use% Mounted on testfs 503.8M 9.6M 494.1M 2% /mnt
Erklaerung: Die "geloeschte" Datei wird noch durch den sleep-Prozess ueber dessen stdin-Filedeskriptor offen gehalten und existiert noch.
Erst wenn der sleep-Prozess terminiert, wird der Platz im Dateisystem wirklich freigegeben: # killall sleep [1]+ Terminated sleep 86400 0</mnt/foo
# df -h /mnt Filesystem Size Used Available Use% Mounted on testfs 503.8M 0 503.8M 0% /mnt
Das Beispiel klingt zunaechst etwas konstruiert, aber dieses Verhalten gibt es auch regulaer in Tools wie qemu/kvm. Anonyme Snapshots werden in qemu/kvm genau so realisiert:
$ kvm -m 256 -snapshot -hda minimal.qcow & [1] 13806 $ ls -l /proc/13806/fd total 0 lrwx------ 1 chris chris 64 21. Feb 20:19 0 -> /dev/pts/1 lrwx------ 1 chris chris 64 21. Feb 20:19 1 -> /dev/pts/1 lrwx------ 1 chris chris 64 21. Feb 20:19 10 -> '/tmp/vl.2ySyTa (deleted)' [...] lr-x------ 1 chris chris 64 21. Feb 20:19 9 -> /home/chris/minimal.qcow
Die nicht-persistenten Aenderungen werden in der Datei /tmp/vl.2ySyTa gespeichert. Diese wird von qemu/kvm beim Starten erzeugt, geoeffnet und direkt danach geloescht. Selbst wenn qemu/kvm hart duch SIGSEGV oder SIGKILL beendet wird, bleibt diese Temporaerdatei nicht in /tmp zurueck. Das Aufraeumen kann also nicht "vergessen" werden.
Gruss, Christian