CentOS6.0でメモリ32GBまでしか認識してくれない件
EC2でx2.4xlargeタイプのインスタンスを立ち上げたんだけど、CentOS6.0がメモリ32BGまでしか認識してくれない、、
メモリ68GBつんでるハズなんだけどfreeとかしても
$ free total used free shared buffers cached Mem: 32677364 677180 32000184 0 9996 31076 -/+ buffers/cache: 636108 32041256 Swap: 3020212 0 3020212
こんな感じ。
色々調べてたらこんなつぶやき発見
CentOS6のどの時点化までのkernelではXenで32GBしかメモリ認識しないワナ…bit.ly/AcReytEC2 で 68GB メモリな m2.4xlarge 上げようとして発覚…version 上げも rebuild もメンドクサイだがなぁ…
— nakaharaさん (@ottan) 1月 15, 2012
フォーラムのやりとりを見てみるとどうやらCONFIG_XEN_MAX_DOMAIN_MEMORY=32 でカーネルをビルドしているから32GBまでしか読んでくれないらしい。
確認してみる
$ less /boot/config-2.6.32-71.29.1.el6.x86_64 |grep CONFIG_XEN_MAX_DOMAIN_MEMORY CONFIG_XEN_MAX_DOMAIN_MEMORY=32
確かに32になってる。。
6.1以降であれば直っているらしいので、現時点で最新の6.2にアップデートした。
で、CentOS6.2のCONFIG_XEN_MAX_DOMAIN_MEMORYを確認。
$ less /boot/config-2.6.32-220.4.2.el6.x86_64 |grep CONFIG_XEN_MAX_DOMAIN_MEMORY CONFIG_XEN_MAX_DOMAIN_MEMORY=128
うん。128になってる。
これで68GB認識してくれるはず!と思ってfree見たけど変わらず、、
なんでだろーと思ってuname -r見てみたらカーネルのバージョンが変わってないようだった。
$ uname -r 2.6.32-71.29.1.el6.x86_64 ※CentOS6.2のカーネル番号は2.6.32-220.4.2.el6.x86_64
どうやら新カーネルで起動するように起動設定も変えないといけないらしい。
ということで「/boot/grub/menu.lst」を修正。
注意しないといけないのが6.2のカーネルにすると今までの「/dev/xvda」ボリュームが「/dev/xvde」になるということ。
この修正をしないで再起動したらカーネルパニック起こして起動しなかった。
システムログを確認してたら「xvdaなんてない。xvdeならあるけど。」みたいなログがあった。
なぜそうなるかは知らない。なんだろう・・・。
$ vi /boot/grub/menu.lst title CentOS Linux release 6.2 (Final) x86_64, with 2.6.32-220.4.2.el6.x86_64 root (hd0,0) kernel /boot/vmlinuz-2.6.32-220.4.2.el6.x86_64 root=/dev/xvde2 ro console=hvc0 crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=de-latin1-nodeadkeys initrd /boot/initramfs-2.6.32-220.4.2.el6.x86_64.img ※既存のCentOS6.0の起動設定はコメントアウトしておく。
※ちなみにライトスケールCentOS6.0のインスタンスストア起動タイプで試したときはhd0,0 -> hd0 へ修正した。こっちはパーティション割られてなかったみたい
あとマウント設定も修正しないといけない。
「/etc/fstab」のxvdaとなっている箇所をxvdeへと修正する。
$ vi /etc/fstab 〜省略
で、今度こそ再起動して確認。
$ free total used free shared buffers cached Mem: 70201052 863288 69337764 0 10160 31324 -/+ buffers/cache: 821804 69379248 Swap: 3020212 0 3020212
無事認識した。
まとめ
・CentOS6.0ではCONFIG_XEN_MAX_DOMAIN_MEMORYが32でビルドされているので、メモリ32GBまでしか認識しない。
・CentOS6.2では修正されているのでyum updateする。
・CentOS6.2のカーネルで起動するように設定。
・再起動してメモリ32GB以上認識する事を確認。
以上。