最近、 Centos5.X32ビットオペレーティングシステムを搭載したLinux仮想マシンという非常に奇妙な問題に遭遇しました。 3GBを超えるRAMを認識できませんでした。いくつかの調査の結果、次の事実を見つけることができました。
デフォルトでは、Centos5.532ビットオペレーティングシステムにはLinux2.4.xが付属しています 4GBを超える物理メモリをサポートするカーネル。一般的な32ビットLinuxカーネルは、カーネルスペースとして独自に使用するために1GBの物理メモリを使用します 残りの物理メモリはユーザースペースとして使用されます 。したがって、PAEをサポートしていないCentos 5.X 32ビットオペレーティングシステムマシンを使用している場合、ユーザースペースとカーネルスペースの分割は3 GB /1GBのようになります。つまり、マシンに3 GBを超える物理メモリを追加した場合、マシンはそれに対応しません。この問題は、カーネルにPAEサポートを追加することで修正できます。
物理アドレス拡張(PAE)とは何ですか?
物理アドレス拡張(PAE) ページアドレス拡張とも呼ばれます は、Pentium Proプロセッサで導入されたIE-32(i386)アーキテクチャのメモリ管理機能です。ページアドレス拡張は、32ではなく64ビットのテーブルエントリを持つ3レベルのページテーブル階層を定義します。これにより、PAEを備えたCPUは4GBを超える物理アドレス空間にアクセスできます。 PAE拡張により、CPU(プロセスではない)がアドレス指定できる最大64GBの物理メモリが許可されます。 PAEはカーネルにコンパイルされていませんが、OSは最大4GBのRAMをアドレス指定できます。同様の状況にあり、PAEサポート付きのカーネルを取得したい場合。ターミナルから次のコマンドを実行します。
yum install kernel-PAE
カーネルがインストールされたら、 grub.confを編集します ファイル(通常は /etc/grub.confにあります または/boot/grub/grub.conf )お好みのエディタで。パラメータtimeoutを見つけます 10秒以上に設定すると、リストからカーネルを選択する時間を増やすことができます。 grub.confを保存します ファイルを作成し、VPSを再起動します。
再起動後にVMが起動すると、マシンに現在インストールされているカーネルのリストが表示されます。ロードするカーネルを選択します(PAEをサポートするカーネル)。 VMがPAEでサポートされているカーネルで正常に起動する場合は、次のように新しいカーネルをデフォルトに設定します。
もう一度、 grub.confを編集します。 タイトルの下のファイル(次のようになります) インストールされているすべてのカーネルのリストが表示されるパラメータ。選択したカーネルの位置を数え、その値をパラメータデフォルトに設定します 。 grub.confを保存します ファイルを作成して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
再起動後にVMが起動したらfree -m 3GBを超える物理メモリに対応しているかどうかを確認するコマンド。