Kürzlich sind wir auf ein sehr seltsames Problem gestoßen, bei dem eine virtuelle Linux-Maschine mit Centos 5.X 32-Bit-Betriebssystem konnte nicht mehr als 3 GB RAM erkennen. Nach einiger Recherche konnten wir folgende Fakten finden.
Standardmäßig wird das 32-Bit-Betriebssystem Centos 5.5 mit Linux 2.4.x geliefert Kernel, der mehr als 4 GB physischen Speicher unterstützt. Ein typischer 32-Bit-Linux-Kernel verwendet 1 GB physischen Speicher für seine eigene Verwendung als Kernel Space und der Rest des physischen Speichers wird als User Space verwendet . Wenn Sie sich also auf einem Centos 5.X 32-Bit-Betriebssystem ohne PAE-Unterstützung befinden, beträgt die Aufteilung des Benutzerspeicherplatzes und des Kernelspeicherplatzes etwa 3 GB/1 GB. Das heißt, wenn Sie Ihrem Computer mehr als 3 GB physischen Speicher hinzufügen, würde Ihr Computer ihn nicht ansprechen. Dieses Problem kann durch Hinzufügen der PAE-Unterstützung im Kernel behoben werden.
Was ist Physical Address Extension (PAE)?
Physische Adresserweiterung (PAE) auch bekannt als Seitenadressenerweiterung , ist eine Speicherverwaltungsfunktion für die IE-32 (i386)-Architektur, die mit Pentium Pro-Prozessoren eingeführt wurde. Page Address Extension definiert eine dreistufige Seitentabellenhierarchie mit 64-Bit-Tabelleneinträgen anstelle von 32. Dies ermöglicht CPUs mit PAE den Zugriff auf einen physischen Adressraum von mehr als 4 GB. Die PAE-Erweiterung erlaubt maximal 64 GB physischen Speicher, den die CPU (kein Prozess) adressieren kann. Während PAE nicht in den Kernel kompiliert ist, kann das Betriebssystem maximal 4 GB RAM adressieren. Wenn Sie sich in einer ähnlichen Situation befinden und Kernel mit PAE-Unterstützung erhalten möchten. Führen Sie den folgenden Befehl vom Terminal aus.
yum install kernel-PAE
Sobald Kernel installiert ist, bearbeiten Sie grub.conf Datei (normalerweise unter /etc/grub.conf oder /boot/grub/grub.conf ) mit einem Editor Ihrer Wahl. Suchen Sie den Parameter timeout und setzen Sie es auf 10 oder mehr Sekunden, damit Sie mehr Zeit haben, den Kernel aus der Liste auszuwählen. Speichern Sie grub.conf Datei und starten Sie Ihren VPS neu.
Wenn Ihre VM nach dem Neustart gestartet wird, erhalten Sie eine Liste der derzeit auf Ihrem Computer installierten Kernel. Wählen Sie den Kernel aus, den Sie laden möchten (Kernel mit PAE-Unterstützung). Wenn Ihre VM erfolgreich mit einem von PAE unterstützten Kernel bootet, setzen Sie den neuen Kernel wie folgt auf den Standardwert.
Bearbeiten Sie grub.conf erneut Datei (sie würde wie folgt aussehen) unter Titel Parameter würden Sie eine Liste aller installierten Kernel sehen. Zählen Sie die Position des Kernels Ihrer Wahl und legen Sie seinen Wert im Parameter default fest . Speichern Sie die grub.conf Datei und starten Sie Ihre VM neu
default=3 // default holds the value of position of Kernel timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Enterprise Linux ES (2.4.21-37.EL) // Kernel in 1st position root (hd0,0) kernel /vmlinuz-2.4.21-37.EL ro root=/dev/hda3 initrd /initrd-2.4.21-37.EL.img title Red Hat Enterprise Linux ES (2.4.21-32.0.1.EL) // Kernel in 2nd position root (hd0,0) kernel /vmlinuz-2.4.21-32.0.1.EL ro root=/dev/hda3 initrd /initrd-2.4.21-32.0.1.EL.img title Red Hat Enterprise Linux ES (2.4.21-27.0.4.EL) // Kernel in 3rd position root (hd0,0) kernel /vmlinuz-2.4.21-27.0.4.EL ro root=/dev/hda3 initrd /initrd-2.4.21-27.0.4.EL.img title Red Hat Enterprise Linux ES (2.4.21-27.0.2.EL) // Kernel in 4th position root (hd0,0) kernel /vmlinuz-2.4.21-27.0.2.EL ro root=/dev/hda3 initrd /initrd-2.4.21-27.0.2.EL.img
Sobald Ihre VM nach dem Neustart gestartet wird, geben Sie free -m ein Befehl, um zu prüfen, ob der physische Speicher mehr als 3 GB adressiert oder nicht.