Ich verwende initramfs
Centos über PXE. Der initramfs
verwendete Speicher wird innerhalb des "zwischengespeicherten" Werts in /proc/meminfo
oder via aufgelistet free
.
Da ich Leistungsdaten berechnen muss, muss ich wissen, ob der von der verwendete Speicher zurückgefordert werden initramfs
kann (dh auf die Festplatte ausgelagert werden kann) oder nicht. In der Regel wird nur ein sehr kleiner Teil des /
Dateisystembaums verwendet, sodass ein Großteil initramfs
davon ausgelagert werden kann.
Als ich darüber las, bekam ich widersprüchliche Informationen. Einige Quellen behaupteten, dass initramfs
sich das Verhalten so verhält initrd
und darauf basiert ramfs
, was bedeutet, dass behaupteter Speicher nicht zum Auslagern ausgelagert werden kann. Andere Quellen behaupten, dass dies initramfs
im Wesentlichen tmpfs
bedeuten würde, dass es zum Auslagern ausgelagert werden kann.
Was wahr ist? Können die nicht verwendeten Teile des initramfs
Dateisystems ausgelagert werden, um Speicherplatz auszutauschen?
Antworten:
BEARBEITEN: Antwort aktualisiert / korrigiert.
Obwohl die Kerneldokumentation zu diesem Thema besagt, dass "Rootfs eine spezielle Instanz von Ramfs ist (oder tmpfs, wenn dies aktiviert ist) [...]", handelt es sich in Wirklichkeit immer noch um Ramfs, wie ein kurzer Blick im Code zeigt (
rootfs
ist) nicht erwähnt inmm/shmem.c
).Einige Patches (siehe z. B. hier und hier ) wurden an die Linux-Kernel-Mailingliste (lkml) gesendet , um dies zu ändern. Aber sie wurden nicht akzeptiert. Ein Grund war, dass Sie Swap normalerweise während der initramfs-Phase oder in eingebetteten Systemen nicht aktiviert haben.
Das initramfs-Image wird in die rootfs extrahiert. Bevor der Benutzerbereich (normalerweise von
switch_root
aufgerufen/init
) zum neuen Stamm wechselt, wird der Inhalt des Stamms gelöscht, sodass nur die minimale Speichermenge eines leeren RAMF übrig bleibt. Danach können Sie die Speichernutzung grundsätzlich ignorieren, und die Frage, ob sie ausgetauscht werden kann, ist nahezu irrelevant.quelle
switch_root
, das initramfs ist ein 2 GB cpio-Archiv einer vollständigen CentOS-Installation, die über PXE gestartet wurde, es bleibt als rootfs. Daher möchte ich wissen, ob ein lokales Swap-Gerät einen Teil der nicht verwendeten 2 GB freigeben kann.Wie Sie sagen,
rootfs
können Dateidaten nur ausgelagert werden, wenn sie mit implementiert sindtmpfs
, nicht mitramfs
.Seit Linux v3.12
tmpfs
wird in einigen Fällen verwendet. Wenn ich den Code richtig gelesen habe, geschieht dies nur , wenn Sie keineroot=
Option übergeben. Sie können die Verwendung vonrootfstype=ramfs
Ramfs durch Übergabe erzwingen, aber Sie können tmpfs nicht durch Übergabe von rootfstype = tmpfs erzwingen.Wenn Sie den
stat
Befehl haben,stat -f .
wird bestätigt, ob Sie sich auf einemramfs
äquivalenten oder einemtmpfs
äquivalenten oder einem anderen Dateisystemtyp befinden.Dies wurde implementiert in:
Es ist aus zwei Gründen etwas verwirrend. Erstens überschreibt es effektiv die Logik im Commit, die unmittelbar davor steht:
Zweitens
root=
scheint der Test für in der Dokumentation nicht erwähnt zu werden, auch nicht in Version 4.17:quelle