Tag Archives: RHEL

[RHEL] MegaRaid 모니터링 및 관리툴 사용하기

DELL 서버등에서 사용되는 레이드 컨트롤러로 LSI에서 OEM 제작 하는 MegaRaid가 있습니다.

PERC/X등으로 불리는 모델들인데 리눅스 기반에서 하드웨어 오류를 모니터링 하기에 문제가 있습니다. (있는줄 알았다-_-;)

리눅스의 기본 제공되는 HDD 모니터링 툴인 SMART로도 다음과 같은 에러만 내뱉는군요.

[code][root@Theeye ~]# smartctl -a /dev/sda
smartctl version 5.36 [i686-redhat-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/


Device: MegaRAID LD 0 RAID1   34G Version: 351X
>> Terminate command early due to bad response to IEC mode page
A mandatory SMART command failed: exiting. To continue, add one or more ‘-T permissive’ options.[/code]

현재 SmartMonTools는 3.38버젼까지 나와있는데 현재까지는 MegaRaid를 지원하지 않습니다.

하지만 [이곳]을 참고해 보면 CVS 상의 최신 소스는 MegaRaid를 지원하는 것을 알 수 있습니다.

하지만 그전에 혹시 MegaRaid측에서 제공하는 모니터링 툴이 있을까 찾아보니 아주 친절하게 있는 것을 알게 되었습니다.

[이곳]에 가보면 각각의 모델별로 모니터링 툴뿐만 아니라 각종 관리툴 및 펌웨어 업그레이드 유틸리티까지 제공합니다.

버젼업그레이드가 충실하지 않은것 같으니 SCSI사용자라면 그냥 다음을 사용하셔도 될것 같네요.

1053430053.gz


위의 파일을 압축 풀어 DellMgrMegamon을 설치합니다. snmp를 사용하기 위해서는 percsnmp를 설치하면 됩니다.

먼저 모니터링 툴을 가동시켜 보겠습니다.

[code][root@Theeye ~]# MegaCtrl -start
32 Bit Compiled Code

MegaCtrl Version (MIMD Linux Driver Compliant): DELL Version : 3.8 Aug 05, 2003

Set CheckConsistencyProgressInterval to 0
MegaCtrl:Service started normally[/code]
정상적으로 실행되는 것을 볼 수 있습니다. 이번엔 메일 알림 기능을 꺼버리겠습니다.
[code][root@Theeye ~]# MegaCtrl -disMail

32 Bit Compiled Code

MegaCtrl Version (MIMD Linux Driver Compliant): DELL Version : 3.8 Aug 05, 2003
The Mailing Option Disabled[/code]
MegaCtrl -help 명령을 사용하여 각종 옵션을 확인할 수 있습니다.

이후부터 /var/log/megaserv.log 파일에 로그가 쌓이게 됩니다. 로그를 살펴보니 이런 로그를 확인할 수 있었습니다.

[code][01/29/2009 (17:28:16)]:
    Adapter 0:  Battery Temperature GOOD.
[01/29/2009 (17:28:16)]:
    Adapter 0:  Battery Voltage GOOD.
[01/29/2009 (17:28:16)]:
    Adapter 0:  No of Charge Cycles = 0
[01/29/2009 (17:28:24)]:
    Adapter 1:  Battery Temperature GOOD.
[01/29/2009 (17:28:24)]:
    Adapter 1:  Battery Voltage GOOD.
[01/29/2009 (17:28:24)]:
    Adapter 1:  No of Charge Cycles = 3
[01/29/2009 (17:28:24)]:
    Adapter 1 Channel 0 Target 0:  Media Error Count=32, Other Error Count=0
[01/29/2009 (17:28:24)]:
    Adapter 1 Channel 0 Target 1:  Media Error Count=32, Other Error Count=0
[01/29/2009 (17:28:24)]:
    Adapter 1 Channel 0 Target 2:  Media Error Count=9, Other Error Count=0
[01/29/2009 (17:28:24)]:
    Adapter 1 Channel 1 Target 12:  Media Error Count=32, Other Error Count=0
[01/29/2009 (17:28:24)]:
    Adapter 1 Channel 1 Target 13:  Media Error Count=12, Other Error Count=0
[01/29/2009 (17:28:28)]:
    -: DELL SES Information:-
    Adapter 1 Channel 0 Target 6 [ Fans=4, Power Supplies=2 & Temperature Sensors=4 ]

[01/29/2009 (17:28:28)]:
    -: DELL SES Information:-
    Adapter 1 Channel 1 Target 6 [ Fans=4, Power Supplies=2 & Temperature Sensors=4 ]

[01/29/2009 (17:28:29)]:
    Adapter 1,Channel 1,Target 12: is going to FAIL.[/code]

보면 알 수 있듯이 채널0의 0,1,2번 하드디스크에 에러가 발생하였고 채널1의 12, 13번 하드에 에러가 발생했던것을 알 수 있습니다.

그리고 마지막에 채널1의 12번 하드가 돌아기시기 직전이라고 알려주는군요.

이번에는 DellMgr프로그램을 사용해 보겠습니다.
[code][root@Theeye ~]# dellmgr[/code]
사용자 삽입 이미지

12번 하드의 정보를 Object – Physical 메뉴에서 확인해 보았습니다. 곧 고장날것이라고 알려주는군요.

사용자 삽입 이미지
다른 하드의 정보를 보니 멀쩡하군요. 이런식으로 레이드로 묶여있더라도 각각의 디스크 정보를 확인할 수 있습니다.

사용자 삽입 이미지
기존의 남아있는 디스크를 핫스페어 디스크로 설정하였습니다. 콘솔상에서 모든 레이드 작업을 할 수 있습니다.

실제로 리빌드 상태를 확인할 수 있고, 리빌드를 정지시키거나 각종 룰을 변경할수도 있습니다.

정말 좋군요!

2010년 5월 27일 추가 –
/usr/sbin/dellmgr 파일의 상단에 다음을 추가하면 위와 같이 화면이 깨지는 문제를 해결할 수 있습니다.
[code]TERM=xterm[/code]

Unix Nohup을 이용해서 로그아웃 후에도 유지되는 쉘 스크립트 실행하기

Unix나 Linux 시스템에서 &나 bg 명령을 사용하여 백그라운드 프로세스로 실행할 때 세션이 종료된 이후에는 일반적으로 프로세스가 종료될 것입니다. 하지만 이것을 피할 수 있는 몇가지 방법이 있습니다. 가령 nohup을 이용하여 명령을 실행하거나 at, batch, cron등을 이용하여 원하는 명령을 반복 실행되도록 할 수 있습니다.

여기서는 nohup을 이용하여 당신이 터미널을 종료한 이후에도 프로세스가 유지되도록 하는 방법에 대해 짧게 알아보겠습니다.

여기서 nohup이라함은 No Hang Up의 의미를 갖으며 아래와 같은 방법으로 사용할 수 있습니다.

$ nohup command-with-options &

Nohup은 쉘스크립트를 실행할 때나 종료까지 매우 오래걸리는 명령을 실행할 때 유용합니다. 이런 경우 명령이 완료될 때 까지 쉘에 연결하고 기다리는것이 어려울 수 있습니다. 하지만 nohup을 이용하면 쉘을 종료한 이후에도 당신의 작업을 지속시킬 수 있습니다.

nohup.out 파일에 대해

기본적으로 명령의 표준출력(Standard Output)은 같은 디렉토리의 nohup.out 파일로 리다이렉트 됩니다. 그리고 표준에러(Standard Error)는 표준출력으로 리다이렉트됩니다. 결과적으로 nohup 명령을 사용할 때 당신의 nohup.out 파일은 표준출력과 표준에러 메시지 모두 기록되게 됩니다.

표준출력과 표준에러를 모두 출력하는 예제 스크립트를 만들어보았습니다. 1>&2는 표준출력을 표준에러로 리다이렉트 시킨다는 의미를 가집니다.

while(true)
do
  echo "standard output"
  echo "standard error" 1>&2 
  sleep 1;
done

스크립트를 별도의 리다이렉트 없이 실행하면 다음과 같은 결과를 확인하실 수 있습니다.

$ nohup sh custom-script.sh &
[1] 12034
$ nohup: ignoring input and appending output to `nohup.out'

$ tail -f nohup.out
standard output
standard error
standard output
standard error
..

다른 로그 파일로 리다이렉트를 구현하면 다음과 같은 결과를 볼 수 있습니다. 표준에러마저 정상적으로 리다이렉트 되고 있는것을 확인하실 수 있습니다.

$ nohup sh custom-script.sh > custom-out.log &
[1] 11069
$ nohup: ignoring input and redirecting stderr to stdout

$ tail -f custom-out.log
standard output
standard error
standard output
standard error
..