
Nehmen wir an, wir haben Folgendes definiert in/etc/fstab
tmpfs /data tmpfs size=90% 0 0
Und dann wir
mount -a
Jetzt /data
ist mittmpfs
Was könnte im folgenden Szenario passieren?
Falls /data
das 90%
RAM-Speicherlimit erreicht ist ( tmpfs
90 %), bedeutet das, dass in diesem Fall ein höherer Wert 90%
des Swap-Speichers verwendet wird?
Antwort1
Kurze Antwort: Wenn Ihr physischer Speicher nicht den Prozentsatz (90 %) bereitstellen kann, wird eventuell der Swap-Speicher verwendet. Wenn die IO größer als der angegebene Prozentsatz ist, treten IO-Fehler auf.
Lange Antwort: Der Prozentsatz stellt den Anteil Ihres Speichers dar (physischer Speicher + Swap-Partition oder Swap-Datei). Angenommen, Sie haben 1 TiB DIMM (RAM) und stellen den Swap auf 100 GiB ein, wie es Redhat empfiehlt, dann treten theoretisch bei jedem IO auf /data über 0,989 TiB IO-Fehler auf, wie bei jedem anderen Dateisystem. In der Praxis sollten Sie sich vor Deadlocks in Acht nehmen, da Speicher und Swap-Speicher von allen anderen Dingen verwendet werden.OOM kann den Speicher im Falle einer Überbelegung nicht löschen.
Hier ist der Beweis für das, was ich meine, ausgeführt auf meinem Laptop:
Zustand des Systems vor dem Schreib-E/A.
ceto@dell:~$ free total used free shared buff/cache available Mem: 8041716 2110100 3461592 208904 2470024 5464012 Swap: 2097148 0 2097148 ceto@dell:~$ cat /etc/fstab | grep data tmpfs /data tmpfs rw,nodev,nosuid,size=90% 0 0 ceto@dell:~$ mv rh/rhel-8.1-x86_64-dvd.iso /var/lib/libvirt/images/^C ceto@dell:~$ findmnt /data TARGET SOURCE FSTYPE OPTIONS /data tmpfs tmpfs rw,nosuid,nodev,relatime,size=7237548k ceto@dell:~$ df /data Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 7237548 0 7237548 0% /data
Ich habe das folgende Skript verwendet, um die IO zu generieren, die über 90 Prozent des /data-Mount-Pfads liegt.
ceto@dell:~$ cat deadlock.sh dd if=/dev/urandom of=/data/test.img bs=16M count=454 > deadlock.txt 2>&1 df /data >> deadlock.txt free >> deadlock.txt sleep 1 rm -rf /data/test.img sync /data
Lassen Sie uns die IO generieren und sehen, was passiert
ceto@dell:~$ sudo sh deadlock.sh
In der Ausgabedatei sehen wir, dass die IO-Fehler auftreten und das System schlampig wird
ceto@dell:~$ cat deadlock.txt dd: error writing '/data/test.img': No space left on device 442+0 records in 441+0 records out 7411249152 bytes (7.4 GB, 6.9 GiB) copied, 39.6605 s, 187 MB/s Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 7237548 7237548 0 100% /data total used free shared buff/cache available Mem: 8041716 2284836 126108 5358092 5630772 139840 Swap: 2097148 2097084 64