Nedávno jsme narazili na velmi podivný problém, kdy virtuální stroj Linux s Centos 5.X 32bitovým operačním systémem nedokázal rozpoznat více než 3 GB RAM. Po nějakém výzkumu jsme mohli zjistit následující fakta.
Ve výchozím nastavení je Centos 5.5 32bitový operační systém dodáván s Linuxem 2.4.x Jádro, které podporuje více než 4 GB fyzické paměti. Typické 32bitové jádro Linuxu využívá 1 GB fyzické paměti pro své vlastní použití jako Kernel Space a zbytek fyzické paměti bude použit jako Uživatelský prostor . Pokud tedy používáte počítač Centos 5.X s 32bitovým operačním systémem bez podpory PAE, bude uživatelský prostor a prostor jádra rozdělen na 3 GB/1 GB. To znamená, že pokud do počítače přidáte fyzickou paměť větší než 3 GB, váš počítač to nebude řešit. Tento problém lze vyřešit přidáním podpory PAE do jádra.
Co je Physical Address Extension (PAE)?
Physical Address Extension (PAE) známé také jako Rozšíření adresy stránky , je funkce správy paměti pro architekturu IE-32 (i386) představená s procesory Pentium Pro. Rozšíření adresy stránek definuje tříúrovňovou hierarchii tabulky stránek s 64bitovými položkami tabulky namísto 32. To umožňuje CPU s PAE přistupovat k fyzickému adresnímu prostoru většímu než 4 GB. Rozšíření PAE umožňuje maximálně 64 GB fyzické paměti, kterou může CPU (není proces) adresovat. Zatímco PAE není zkompilován do jádra, OS může adresovat maximálně 4 GB RAM. Pokud jste v podobné situaci a přejete si získat jádro s podporou PAE. Spusťte následující příkaz z terminálu.
yum install kernel-PAE
Jakmile je jádro nainstalováno, upravte grub.conf soubor (obvykle se nachází na /etc/grub.conf nebo /boot/grub/grub.conf ) s editorem dle vašeho výběru. Najděte parametr timeout a nastavte jej na 10 nebo více sekund, abyste získali více času na výběr jádra ze seznamu. Uložit grub.conf soubor a restartujte VPS.
Když se váš VM po restartu objeví, získáte seznam jader aktuálně nainstalovaných ve vašem počítači. Vyberte jádro, které chcete načíst (jádro s podporou PAE). Pokud se váš virtuální počítač úspěšně zavede s jádrem podporovaným PAE, nastavte nové jádro na výchozí následovně.
Znovu upravte grub.conf soubor (vypadalo by to následovně), pod title parametr uvidíte seznam všech nainstalovaných jader. Spočítejte pozici jádra dle vašeho výběru a nastavte jeho hodnotu v parametru výchozí . Uložte soubor grub.conf soubor a restartujte svůj VM
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
Jakmile se váš virtuální počítač po restartu spustí, spustí se free -m příkaz ke kontrole, zda adresuje fyzickou paměť větší než 3 GB nebo ne.