본인이 운영하는 VMWare ESXi 서버의 Disk 문제를 사전에 감지하고 Disk 장애로 인한 데이터 유실을 막기 위해 감지 스크립트를 구동 중이다.

 

구성도

0. ESXi 구성 설명

- 나의 ESXi (Ver 5.5) 서버에는 아래와 같은 VM Guest 들이 구동 중이다.

  1. NAS4 Free
  2. Blog Web Server (이 Guest OS는 항상 구동이 된다.)
  3. Windows 2012 R2 Server
  4. Windows 7
  5. RHV
  6. 기타 Linux 서버들

- ESXi의 Storage는 Internel Disk 형태이다.

  1. SSD 512GB * 1EA (OS 영역)
  2. HDD 4TB * 2EA (Data 영역)

- Disk 구성 설명

ESXi의 본체는 PC급으로서 별도의 RAID Controller는 장착되어있지 않다.

대신, Guest VM인 NAS4 Free에서 HDD 2개를 RAID1(4TB+4TB)으로 구성하였다.

RAID1 Disk를 ZFS 볼륨으로 구성하고 iSCSI, CIFS, NFS를 통해 각각의 VM Guest에게 데이터 영역으로 할당을 하여 운영 중이다.

데이터 영역의 볼륨을 RAID1 으로 이중화를 하였지만 Disk Fault 감지를 제때 하지 못 하므로 만약 Disk가 2개 모두 문제가 발생하면 데이터가 유실될 수 있다.

vCenter를 사용하면 Alarm 정책을 통해 감지할 수 있겠지만, 본인은 vCenter를 사용하지 않으므로 항상 켜져있는 Blog Web Server(CentOS Linux)에서 감지하여 메일을 보내주는 방식을 사용하였다.

 

1. ssh 구성

1.1. ESXi sshd 활성화

Blog Server에서 ESXi의 Disk 상태를 체크하기 위해선 root 접속 후 확인이 필요하다.

따라서 ssh 접속을 key를 통해 비번없이 접속할 수 있도록 해야한다.

1.2. ESXi sshd 구동

참고 문서 : ESXi sshd 활성화

1.3. ssh public 키 생성

- 리눅스 VM Guest OS에서

  • ssh-keygen -t rsa 실행 후 모두 엔터 입력

- id_rsa와 id_rsa.pub 키 파일이 생성된 것이 확인된다.

- id_rsa.pub 키의 내용을 클립 보드에 복사

- ESXi authorized_keys 에 내용 붙여넣기

1.4. 로그인 테스트

  • ESXi 서버의 IP(192.168.100.140)로 ssh root 접속
  • 최초 접속 시 know hosts에 등록을 할 것인지 묻는다. yes 를 눌르면 바로 ESXi Shell 접속이 됨. /root/.ssh/known_hosts 파일에 known host 등록된 후에는 다시 묻지 않는다.
  • ESXi 서버에서 who 명령을 치면 (192.168.100.159 _ blog server)에서 접속한 정보가 확인된다.

참고 문서 : ssh key - 비밀번호 없이 로그인

 

2. ssmtp 설치 및 설정

ssmtp는 메일 발송 프로그램이다.

2.1. ssmtp 설치

2.2. 부수 패키지 설치

2.3. ssmpt 설정

- 기본 config 파일 백업

- ssmtp.conf 설정하기

  • 자신의 환경에 맞게 수정한다.
  • hostname이 ssmtp 를 구동하는 서버 hostname과 일치하게 기입할 것. 불일치 시 ssmtp 구동 실패함.
  • 본인은 메일 발송은 gmail, 수신은 개인 메일 서버를 통해 받는 것으로 구성 하였다.

 

3. Disk 감지 Script 작성

3.1. Source Directory 생성

3.2. Script 작성

- 위 스크립트의 주석 라인만 제거하고 싶으면 아래와 같이 수행한다.

- 퍼미션 설정 (root 에서 실행될 수 있도록 퍼미션 설정)

3.3. Disk 감지 구동 방식

  • Linux Guest(Blog Web Server)에서 Cron을 통해  EsxiDiskCheck.sh 주기적으로 수행.
  • Disk 문제가 발견되지 않으면 로그만 기록하지만, 만약 Disk 문제가 발견되면 로그 기록 후 관리자에게 메일 발송.
  • 관리자는 스마트폰을 통해 Push 알람을 받아서 Disk 문제를 감지한다.

3.4. 스크립트 테스트

  • 해당 스크립트가 메일까지 발송을 제대로 하는지 여부는 스크립트 코드 중 CHK1 변수에서 -v (아래 빨간색)를 지우고서 스크립트를 수동으로 실행 시켜본다.
  • CHK1=$(ssh $ESXI /usr/lib/vmware/vm-support/bin/smartinfo.sh | grep 'Health Status' | awk '{print $3}' | grep -v OK)     --> 12번 라인에 위치.
  • 실행 후 /var/log/EsxiDisk/status.log 로그와 수신 메일주소로 메일이 왔는지 확인해 본다.

 

4. 스케쥴 등록

4.1. crontab 설정

- 원하는 시간에 돌 수 있도록 cron job 설정

  • 오전 08, 오후 08시 하루 2번 수행될 수 있도록 설정된 예이다.

4.2. 로그 확인

- 시간이 흐른 후 로그를 확인해 보면 아래와 같다.

4.3. 에러감지

- 만약 에러가 감지 된다면 아래와 같이 로그가 남는다.

- 또한 아래와 같은 내용으로 메일을 수신 받게된다.

  • 스마트폰에서 도착한 메일을 바로 푸시 알림을 통해 확인하는 방법에 대한 내용은 생략한다.

 

이상이다.

 

ESXi Disk Error Detect and Alert
태그:                             

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Solve : *
26 − 7 =