virtualization/VMware

[VMware] vSAN 모의 디스크 장애 테스트

yueisu 2017. 7. 8. 16:31

vSAN을 구성후 빠짐없이 해야될 작업이 있을겁니다.

바로 장애 테스트죠. 네트워크는 물론 호스트의 정지를 시작해서 캐시용 SSD나 캐퍼시티용 HDD(또는 SSD)의 장애를 상정한 테스트가 필요하죠.


디스크 장애 테스트는 어떻게 하지는지요? 디스크의 경우는 네트워크나 호스트와 달리 모의로 장애를 발생시키기가 어렵습니다. 그냥 디스크를 뽑으면 된다고요? 흐흐

아시다시피 가동중인 디스크의 탈착(탈착)으로 실시를 할 경우, 디스크의 장애로는 인식을 하지않죠. 가동중인 디스크를 뽑아둔 뒤 60분 이상 냅두면 데이터의 동기가 시작되므로 결과적으로 장애와 동일한 움직임을 확인할 수 있습니다.


가동중인 디스크를 뽑는 것은 그다지 좋은 방법이 아닙니다. 

  • 우선 60분을 기다려야되니 시간낭비이죠. ESXi 호스트에 대해서 전부 실행할 경우는 더더욱 시간이 아깝습니다. 물론 clomrepairdelay 옵션값을 10분 정도로 짧게 하면 되기는 합니다만...
  • 또다른 이유는 가동중인 디스크를 뽑기 때문에 디스크가 손상될 수 있습니다. 이 경우 하드웨어 벤더의 지원 대상이 되지않는 것으로 알고 있습니다.


자아, 그러면 어떻게 하면 되느냐...

VMware사에서 멋진 문서를 공개해놓고 있습니다. 이름하며 "Failure Testing"!


이 문서는 호스트를 포함한 디스크 장애 발생시의 동작에 대한 내용의 문서입니다. 여기에 디스크를 가동중에 뽑았을 경우의 동작, 예를들어 60분 이내에 되돌렸을 경우나 반대로 60분 넘게 되돌리지 않았을 경우 등에 대한 vSAN의 동작에 대해서도 소개를 하고 있습니다.


추천하고 싶은 부분은 "Virtual SAN Disk Fault Injection Script for POC Failure Testing"란 부분입니다. 이 부분은 가동중인 디스크를 뽑지않아도 모의 장애 상태를 만들수 있는 명령어를 소개하고 있습니다.

/usr/lib/vmware/vsan/bin/vsanDiskFaultInjection.pyc


위의 스크립트는 ESXi 6.0 U1부터 디폴트로 포함이 되어있으며 스크립트를 실행하므로써 디스크의 에러를 의도적으로 발생시킬 수 있습니다.


스크립트를 실행합니다. 영구 손상의 상태를 만들 경우는 -p 옵션을 지정합니다.

python /usr/lib/vmware/vsan/bin/vsanDiskFaultInjection.pyc -p -d 디바이스명


스크립트를 실행하면 금새 디스크가 "permanent error" 상태가 됩니다.(타이밍에 따라 수분 걸릴수가 있습니다)


이 상태에서 데이터의 동기나 가상머신에 대한 영향을 확인하시고...


장애 테스트가 완료되었다면 -c 옵션을 지정하여 에러 상태를 클리어합니다. 

주의 : -c 옵션을 지정하여 에러 상태를 클리어하여도 디스크 그룹은 원상태로 복구되지않습니다. 따라서 디스크 그룹은 다시 만들어줘야 합니다. 주의하세요.

python /usr/lib/vmware/vsan/bin/vsanDiskFaultInjection.pyc -c -d 디바이스명



어떻습니까? 디스크 뽑고 60분 멍~하니 기다리지않아도 되죠? 흐흐


위의 문서를 참고하셔서 확인을 해보시고 활용하시길...!