某Linux服务器从OS查询的内存容量与其他相同配置的服务器不同

发布时间:  2015-12-02 浏览次数:  719 下载次数:  0
问题描述

Linux操作系统/pro/meminfo文件中查询内存总容量,其中2台服务器的总容量较另外8台少了“100568 KB”。

hwlg3501

MemTotal:       264094448 kB

hwlg3502

MemTotal:       264094448 kB

hwlg3503

MemTotal:       264195016 kB

hwlg3504

MemTotal:       264195016 kB

hwlg3505

MemTotal:       264195016 kB

hwlg3506

MemTotal:       264195016 kB

hwlg3507

MemTotal:       264195016 kB

hwlg3508

MemTotal:       264195016 kB

hwlg3509

MemTotal:       264195016 kB

hwlg3510

MemTotal:       264195016 kB

处理过程

检查hwlg3501hwlg3502两台服务器硬件配置,其与其他服务器配置完全相同,同时运行正常,无故障。排除硬件差异或者故障导致此问题。

运行“uname -a”检查操作系统版本信息,hwlg3501hwlg3502操作系统内核版本如下:

检查其他服务器操作系统内核版本如下:

两者内核版本并不一致,进一步检查/boot/grup/menu.lst文件。

hwlg3501hw3502两台服务器默认启动到“2.6.32-504.el6.x86_64.debug”,与其他服务器设置不同。

[root@hwlg3501 grub]# cat menu.lst

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:  You do not have a /boot partition.  This means that

#          all kernel and initrd paths are relative to /, eg.

#          root (hd0,0)

#          kernel /boot/vmlinuz-version ro root=/dev/sda1

#          initrd /boot/initrd-[generic-]version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

hiddenmenu

title Red Hat Enterprise Linux 6-debug (2.6.32-504.el6.x86_64.debug)

root (hd0,0)

kernel /boot/tboot.gz logging=vga,serial,memory

module /boot/vmlinuz-2.6.32-504.el6.x86_64.debug ro root=UUID=550500db-7672-4bf9-92cd-3f5f9bb9d4aa intel_iommu=on amd_iommu=on rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_NO_LVM crashkernel=auto rhgb quiet rd_NO_DM rhgb quiet

module /boot/initramfs-2.6.32-504.el6.x86_64.debug.img

title Red Hat Enterprise Linux 6 (2.6.32-504.el6.x86_64)

root (hd0,0)

kernel /boot/tboot.gz logging=vga,serial,memory

module /boot/vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=550500db-7672-4bf9-92cd-3f5f9bb9d4aa intel_iommu=on amd_iommu=on rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_NO_LVM crashkernel=auto rhgb quiet rd_NO_DM rhgb quiet

module /boot/initramfs-2.6.32-504.el6.x86_64.img

根因

由于两者内存容量差异仅有约100MB,基本可以排除硬件问题导致内存容量差异。

Linux操作系统中/proc/meminfo显示的memtotal也并非内存的物理容量。该项目中每台服务器配置32GB*8=256GB内存,折合“268435456 KB”,较meminfo文件显示的容量多“4240440 KB”。

这些内容是Linux系统预留的内存,主要用于存放初始代码,系统缓存等。不同的内核版本,其预留数量不同,这也是导致本案例中问题的原因。
解决方案

修改hwlg3501hwlg3502两台服务器的启动选项,重新启动服务器。

启动成功后,在meminfo文件中查看到的内存总容量与其他服务器相同。

建议与总结

不同的操作系统,不同的系统版本,其对内存的分配使用策略不同,从操作系统里面查询的内存容量值并非真实的物理内存容量。

如果是作硬件配置确认,建议从服务器的管理界面iBMC进行确认,或者使用Linuxdmesg命令更加准确。

END