Re: Verfügbare r Speicherplatz wird nicht richtig berechnet

Christian Perle <[email protected]>
Newsgroups gmane.user-groups.linux.dresden
Organization Silmor
Message-ID <[email protected]>
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
-- 
Christian Perle                                    chris AT linuxinfotag.de
010111                                              http://chris.silmor.de/
101010                          LinuxGuitarKitesBicyclesBeerPizzaRaytracing
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.