32bit Linux 에서 4G 이상 메모리 사용 하기


## 설치 환경 centos 5.11

Linux localhost.localdomain 2.6.18-419.el5PAE #1 SMP Fri Feb 24 22:09:08 UTC 2017 i686 i686 i386 GNU/Linux  



1. 원인

- 32bit OS 에서 인식할 수 있는 최대 메모리 용량의 최대 제한이 있는 것이 문제 점 / 일반적으로 3.25G

 * linux windows 의 공통적인 문제 / 32bit architecture의 한계


2. 전제 조건

- OS 에서는 4G 이상의 메모리가 인식되지 않지만, baseboard에서는 4G 이상 메모리가 인식 될것.


## 확인시 총 8G*2 인식

dmidecode -t memory | grep -i size

   Size: 8192 MB

   Size: No Module Installed

   Size: 8192 MB

   Size: No Module Installed


## 확인시 메모리가 전부 인식이 안됨.

free -m

            total       used       free     shared    buffers     cached

Mem:          2716       2586        129          0        246       2171



- CPU 에 PAE(Physical Address Extensions) 기능이 있을 것

 * 검색시 pae 플레그가 출력 된다면 이 cpu는 PAE kernel을 지원하는 CPU이다.

cat /proc/cpuinfo | grep pae

flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm abm [8]


- 재부팅 작업이 1회 필요 하므로 서비스 중인 서버에서는 고객사와 합의가 필요



3. PAE 지원 커널 설치

- CPU에서 정상적으로 PAE 기능을 지원한다면 PAE kernel 패키지를 설치 한다.


yum install "kernel-PAE*"



4. PAE 커널로 부팅 시키기

- PAE kernel 을 설치 완료가 되었다면 /etc/grub.conf 파일을 수정하여 PAE 커널로 OS 가 부팅될 수 있도록 한다.


vi /etc/grub.conf


#boot=/dev/sda

default=0 ## default=1 이면 수정



5. 리부팅

- PAE 커널을 적용하여 서버를 재부팅 한다. 재부팅 후에 uname -a 명령어로 PAE kernel 을 확인.

아래와 같이 PAE 커널이 적용 되었다면 이제 4G 이상의 메모리도 정상적으로 사용이 가능



+ Recent posts