わーくあうと!

日々の作業でためになったことをアウトプットすることで自分の成長につながればなと。

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

こんな感じ。
色々調べてたらこんなつぶやき発見

フォーラムのやりとりを見てみるとどうやら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以上認識する事を確認。

以上。