Récemment, nous avons rencontré un problème très étrange dans lequel une machine virtuelle Linux avec Système d'exploitation Centos 5.X 32 bits ne pouvait pas reconnaître plus de 3 Go de RAM. Après quelques recherches, nous avons pu trouver les faits suivants.
Par défaut, le système d'exploitation Centos 5.5 32 bits est fourni avec Linux 2.4.x Noyau prenant en charge plus de 4 Go de mémoire physique. Un noyau Linux 32 bits typique utilise 1 Go de mémoire physique pour son propre usage en tant qu'espace noyau et le reste de la mémoire physique sera utilisé comme espace utilisateur . Par conséquent, lorsque vous êtes sur une machine avec système d'exploitation Centos 5.X 32 bits sans prise en charge PAE, la répartition de l'espace utilisateur et de l'espace noyau serait de l'ordre de 3 Go/1 Go. Cela signifie que si vous ajoutez plus de 3 Go de mémoire physique à votre machine, celle-ci ne s'en occupera pas. Ce problème peut être résolu en ajoutant la prise en charge PAE dans le noyau.
Qu'est-ce que l'extension d'adresse physique (PAE) ?
Extension d'adresse physique (PAE) également connu sous le nom d'extension d'adresse de page , est une fonctionnalité de gestion de la mémoire pour l'architecture IE-32 (i386) introduite avec les processeurs Pentium Pro. L'extension d'adresse de page définit une hiérarchie de table de page à trois niveaux avec des entrées de table de 64 bits au lieu de 32. Cela permet aux CPU avec PAE d'accéder à un espace d'adressage physique supérieur à 4 Go. L'extension PAE autorise un maximum de 64 Go de mémoire physique que le CPU (pas un processus) peut adresser. Bien que PAE ne soit pas compilé dans le noyau, le système d'exploitation peut adresser un maximum de 4 Go de RAM. Si vous êtes dans une situation similaire et que vous souhaitez obtenir le support Kernel avec PAE. Exécutez la commande suivante depuis le terminal.
yum install kernel-PAE
Une fois le noyau installé, modifiez grub.conf fichier (généralement situé dans /etc/grub.conf ou /boot/grub/grub.conf ) avec un éditeur de votre choix. Localisez le paramètre timeout et réglez-le sur 10 secondes ou plus, afin que vous ayez plus de temps pour sélectionner le noyau dans la liste. Enregistrer grub.conf fichier et redémarrez votre VPS.
Lorsque votre machine virtuelle démarre après le redémarrage, vous obtenez une liste des noyaux actuellement installés sur votre machine. Sélectionnez le noyau que vous souhaitez charger (noyau avec support PAE). Si votre machine virtuelle démarre avec succès avec le noyau pris en charge par PAE, définissez le nouveau noyau par défaut comme suit.
Modifiez à nouveau grub.conf fichier (il ressemblerait à ce qui suit), sous titre paramètre, vous verriez la liste de tous les noyaux installés. Comptez la position du noyau de votre choix et définissez sa valeur dans le paramètre par défaut . Enregistrez le grub.conf fichier et redémarrez votre 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
Une fois que votre machine virtuelle démarre après le redémarrage, lancez free -m commande pour vérifier si elle adresse la mémoire physique de plus de 3 Go ou non.