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 이상의 메모리도 정상적으로 사용이 가능