RHEL6 버전에 /etc/grub.conf 에 설정하는 crashkernel(kdump) 사이즈가 문제가 되고 있다.
기존 RHEL5 버전에서는 128M 정도면 왠만큼 처리가 가능했으나, RHEL6 버전은 그 이상의
사이즈를 요구하는 듯 하다.

RHEL6 버전 같은경우 3rd party modules 이 포함되어있는 환경에서 crashkernel=auto 로 설정되어 있는 경우 crashkernel=auto 로 측정된 값 보다 더 큰 사이즈의 메모리가 필요할 수 있다는 내용이다. ( 실제로 auto 로 설정하면 vmcore 가 발생되지 않는 경우가 있더라. )

내가 경험한 경우에 의하면 3rd party modules 이 포함되어 있지 않더라도 auto 로 하면
vmcore 가 발생되지 않는 경우가 있더라.

그래서 현재는 crashkernel=768M 를 권장 하고 있다.

관련 자료 :
Link : https://access.redhat.com/solutions/59432
Link : https://sites.google.com/site/syscookbook/rhel/rhel-kdump-rhel6

RHEL6를 사용 하면서 Ctrl + Alt + Del 키를 의도하지 않고 눌러서 곤란한 경우가 생길 수 있다.
그럼 ???
해당 기능을 비 활성화 시킬 수 있을까?

방법 :
1. Xwindows (GUI) ( RHEL5, RHEL6 )

xwindows_140430_1

시스템기본설정키보드 바로 가기 를 선택

xwindows_140430_2

로그아웃” 을 선택 하고 Back Space 키를 누름 ( RHEL5 도 거의 동일 합니다. )

xwindows_140430_3

첨부 화면처럼 사용 않음 으로 표시되면 해당 기능이 비활성화 된 것임

2. Console ( TUI )

RHEL6

File : /etc/init/control-alt-delete.conf
start on control-alt-delete
exec /sbin/shutdown -r now “Control-Alt-Delete pressed”

to
#start on control-alt-delete
#exec /sbin/shutdown -r now “Control-Alt-Delete pressed”

저장 후 종료 하시면 바로 적용이 됩니다.

 

RHEL5

File : /etc/inittab

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

to

# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

저장 후 종료 하고

# init q

실행 시키면 바로 적용이 됩니다.

참고 자료 :
Link : https://access.redhat.com/site/solutions/376433
Link : https://access.redhat.com/site/solutions/1058
Link : https://access.redhat.com/site/solutions/449373

RHEL 을 이용하면서 항상 듣게되는 말?
튜닝좀 해주세요…

뭘 해달란 말인가??? 이 시스템이 어떻게 사용하는지도 모르고… 얼마나 사용하는지도 모르고…
뭘 어떻게 건드려야 될지도 모르거늘???

그럼 어떻게 해야되나?

RHEL6 부터 이런 문제들을 해결하고자
기본적인 몇가지 프로파일을 중심으로 튜닝값을 제시하고 있다.
Link : RHEL with tuned , RHEL6 Performance_Tuning_Guide

“tuned”를 사용하기 위해서는 “tuned” 패키지를 설치하고 “tuned-adm” 명령어를 통해서 조절이 가능하다.

프로파일 종류 :
default

desktop-powersave
server-powersave
laptop-ac-powersave
laptop-battery-powersave
spindown-disk
throughput-performance
latency-performance
enterprise-storage

그 외 RHEL5 에서도 “ktune” 패키지가 존재하지만 RHEL6 만큼의 조절은 불가능 한것으로 보인다.

 

기존 RHEL5 의 경우 /etc/sysconfig/rawdevice 파일을 이용하여 raw device 를 쉽게 구성 하였지
RHEL6 에서는 해당 기능을 지원하지 않는다.

그럼 어떻게 raw device 를 구성해야 될까?

1. /etc/rc.local
/etc/rc.loca 에 해당 내용을 직접 이용하는 방법

ex)

raw /dev/vg00/lv00 /dev/raw1
raw /dev/vg00/lv01 /dev/raw2
.
.
.
chown username.groupname /dev/raw*

2. udev – /etc/udev/rules.d/60-raw.rules
udev 룰을 이용하여 직접 추가 하는 방법

ex)

ACTION=="add|change", ENV{DM_VG_NAME}=="VolGroup00", ENV{DM_LV_NAME}=="LogVol00", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add|change", ENV{DM_VG_NAME}=="VolGroup00", ENV{DM_LV_NAME}=="LogVol01", RUN+="/bin/raw /dev/raw/raw2 %N"
.
.
.
ACTION=="add|change", KERNEL=="raw*", OWNER="username", GROUP="groupname", MODE="0660"

위 2가지 방법으로 raw device 를 구성 후

#raw -qa
/dev/raw/raw1:    bound to major 253, minor 1
/dev/raw/raw2:    bound to major 253, minor 2

and

#ls -al /dev/raw*
crw-rw—-  1 root disk 162, 1 Oct  4 11:37 raw1
crw-rw—-  1 root disk 162, 2 Oct  4 11:37 raw2

으로 확인하면 끝…

관련 참고 :
Link : https://access.redhat.com/site/solutions/231323

RHEL6 버전을 사용 하면서 이런 경우는 생각도 못했다.

Link : https://access.redhat.com/site/solutions/315923
Link : https://access.redhat.com/site/solutions/320053
Link : https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/6.1_Technical_Notes/dracut.html

고객사에서 발생된 문제로 기존 5개의 LUN 을 사용하다가 필요가 없게된 LUN 2개를 Online 중에 제거 하였습니다.
그런데 문제는 재부팅 후 Storage Volume 정보가 duplicate PV’s and Couldn't find device with uuid 된다는 것 입니다.

물론  /etc/multipathd/* 모든 정보를 delete 하면 해결이 되었지만…
또 다시 재부팅 하게되면  발생이 된다는 것 입니다.

원인을 찾아보던중 위 링크에 첨부된대로 RHEL 6.1 부터 RHEL 6.4 GA 버전까지 dracut 을 이용하여 initramfs 파일을 생성하게 되면 /etc/lvm/* 정보와 /etc/multipathd/* 정보가 포함되어 발생되는 이슈로 기존 5개 LUN 상태일때의 /etc/multipath/* 정보로 부팅을 시도하지만 실제 3개의LUN 만 있다보니 Storage Volume 에 대한 LVM, MultiPath 정보가 맞지 않는 문제가 발생 되었습니다.

해결 방법)
1. 기존 OS 설치 후 생성된 initramfs 파일로 부팅 후 dracut 을 이용하여 새로운 initramfs 파일을 생성 하고 재 부팅 하거나
2. /etc/dracut.conf 파일에 omit_dracutmodules+=”multipath” 을 추가 후 initramfs 를 생성 하여야 합니다.

추가1) dracut 할때 -H 옵션도 검토 대상임.
-H, –hostonly          Host-Only mode: Install only what is needed for
booting the local host instead of a generic host.

 

기존 RHEL5 버전에 존재하던 /etc/modprobe.conf 가 RHEL6 에서는 없어졌다?
어디로 갔을까???

일반적인 경우에 /etc/modprobe.conf 를 찾게되는 경우는 bonding 을 구성할때이지 싶다.

@ RHEL5

#vi /etc/modprobe.conf
alias bond0 bonding
alias bond1 bonding

를 추가 해줘야 하는데??? 이거 어디로 갔어???

@ RHEL6

#vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
alias bond1 bonding

 

위와 같이 지정된 파일에 해당 설정을 적용 시켜주면 된다.

뭐… 신경 안 쓰고 사용하면… 별일 있겠냐???( 있지… ) 생각 하겠지만…
예전 RHEL5 를 생각하고  /etc/security/limits.confnproc 값을 아무리 설정 하여도 귀신 들린 것
처럼… nproc 값이 초기화 되는 경험을 해본 사람이라면??? 무슨 소린지 단번에 알아 들을 수 있다.

RHEL6 로 오면서 “/etc/security/limits.d/90-nproc.conf” 라는 파일이 생겼으며
 /etc/security/limits.conf 에다 nproc 값을 아무리 바꿔 봐도
/etc/security/limits.d/90-nproc.conf  값이 우선시 되기 때문에 “1024” 로 초기화 된다.

그러므로 nproc 항목에 대해서는  /etc/security/limits.d/90-nproc.conf 파일의 맨 마지막 줄에 값을 추가 하기 바란다.
나머지 항목도 파일로 관리 해도 될듯? 80-nofile.cnof 처럼?
ex)

# Default limit for number of user’s processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

* soft nproc 1024
root soft nproc unlimited
user1 soft nproc 8192
user1 hard nproc 8192

 

오늘 알게된 사실이다…
지난번… Charset 관련 테스트를 위하여 /etc/sysconfig/i18n 에 ko_KR.euckr 설정을 해 놓았다.

그리고… 오늘 부팅???

Xwindows 로그인이 안 된다… 헐…

원인을 찾아 보던중… 지난번에 설정한 i18n 파일의 ko_KR.euckr 을 ko_KR.UTF-8 로 설정하고 (GDM 에서도 기존 euckr 로 되어 있는 부분을 수정해야 함.)
정상 부팅…
RHEL6 에서는 ko_KR.euckr 이 문제가 된다.

꼭… 써야되는 환경이라면 .bash_profile or .bashrc 등에 별도로 선언을 해서 사용하길 바란다.

관련하여… 도움을 준 김x수 씨에게 감사를 전한다…

 

발생 환경 :

  • Red Hat Enterprise Linux 6
    • Kernel version earlier than kernel-2.6.32-220.4.2.el6
    • TSC clock source
    • Intel CPU
  • Red Hat Enterprise Linux 5
    • Red Hat Enterprise Linux 5.3, 5.6, 5.8: please refer to the resolution section for affected kernels
    • Red Hat Enterprise Linux 5.0, 5,1, 5.2, 5.4, 5.5 ,5.7: all kernels affected
    • TSC clock source
    • Intel CPU
  • An approximate uptime of around 208.5 days.

쉽게 말해서 /proc/cpuinfo 에 constant_tsc  와 nonstop_tsc 플래그가 있고 약 208.5일 정도에 시스템이 reboot 또는 hang 이 걸린 시스템

대상 : RHEL5,6 , SUSE Enterprise Linux 11

해결 방법 :

RHEL : https://access.redhat.com/knowledge/solutions/68466 ( RHN ID 필요 )

HP : http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c03221591

SUSE : http://www.novell.com/support/kb/doc.php?id=7009834

RHEL5 – https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/5/html-single/Deployment_Guide/index.html

  • dirty_background_ratio — Starts background writeback of dirty data at this percentage of total memory, via a pdflush daemon. The default value is 10.
  • dirty_expire_centisecs — Defines when dirty in-memory data is old enough to be eligible for writeout. Data which has been dirty in-memory for longer than this interval is written out next time a pdflush daemon wakes up. The default value is 3000, expressed in hundredths of a second.
  • dirty_ratio — Starts active writeback of dirty data at this percentage of total memory for the generator of dirty data, via pdflush. The default value is 40.
  • dirty_writeback_centisecs — Defines the interval between pdflush daemon wakeups, which periodically writes dirty in-memory data out to disk. The default value is 500, expressed in hundredths of a second.

RHEL6 – https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-proc-dir-sys.html

  • dirty_background_ratio — Starts background writeback of dirty data at this percentage of total memory, via a pdflush daemon. The default value is 10.
  • dirty_expire_centisecs — Defines when dirty in-memory data is old enough to be eligible for writeout. Data which has been dirty in-memory for longer than this interval is written out next time a pdflush daemon wakes up. The default value is 3000, expressed in hundredths of a second.
  • dirty_ratio — Starts active writeback of dirty data at this percentage of total memory for the generator of dirty data, via pdflush. The default value is 20.
  • dirty_writeback_centisecs — Defines the interval between pdflush daemon wakeups, which periodically writes dirty in-memory data out to disk. The default value is 500, expressed in hundredths of a second.

 

RHEL5 버전과 RHEL6 버전의 vm.dirty_* 값(vm.dirty_ratio)이 위와 같이 다르다.