virtualization/VMware

[VMware] vSAN 팁 몇가지

yueisu 2018. 1. 3. 17:33

이미 10,000사 이상에서 도입되었으며 기세가 점점 거대해지는 vSAN입니다만 고객과 얘기를 해보면 의외로 vSAN에 대한 정보가 부족한 것 같습니다. 왜냐하면 vSAN이란 솔루션의 특징은 알고 있어도 실제로 도입할 경우나 도입후 운용해나갈 경우 주의해야될 점들에 대해서는 잘모르는것 같았기 때문입니다.


따라서 도입시나 운용시 조금은 주의가 필요한 내용을 정리해 봤습니다.(이미 알려진 내용일지 모르겠습니다)


● 하나의 RAID Controller에서는 VMFS과 vSAN FS을 구성할 수 없습니다.

아마 초기 버전의 vSAN 구성에서 있을 수 있는 경우일지 모르겠습니다만, 최근에도 지원 의뢰가 있는거 같습니다. 하나의 RAID Controller상에서 VMFS과 vSAN FS을 구성하는 것은 지원을 받을 수 없습니다. 하나의 RAID Controller에 ESXi용 RAID 1과 vSAN용 non-RAID를 구성하는 것은 피해야 됩니다. 

vSAN을 구성할 경우 ESXi의 부트 디바이스로 내장 SD카드나 SATADOM 같은 플래시 디바이스를 이용하는 것이 일반적이라고 할 수 있습니다만 스크래치 파티션을 로컬 데이터스토어에 보존하기위해 하드 디스크에 ESXi를 설치하고자 할 때는, ESXi용으로 RAID Controller를 준비, vSAN용 RAID Controller를 추가로 준비해줘야 됩니다.


● 부트 디바이스로 내장 SD 카드를 이용할 경우, 스크래치 파티션을 고려해야 됩니다.

내장 USB 메모리나 SD 카드에 ESX를 설치할 경우 로그는 RAM 디스크상에 보존됩니다. 단지 RAM 디스크상에 보존되기 때문에 ESXi 호스트를 재기동하면 로그는 사라지고 이로인해 장해의 원인 규명이 힘들어지게 됩니다.


이를막기위해서는 스크래치 파티션을 구성할 필요가 있습니다만, vSAN에서는 ① ESXi 호스트의 로컬 데이터스토어를 이용하든지 ② NFS의 디렉토리를 호스트별로 준비하는 방법뿐입니다. 단지 ①의 경우는 위의 팁에서 소개를 했듯이 RAID Controller를 추가로 준비해야되죠. ②역시 NFS 디렉토리를 준비해줘야 됩니다.


지금까지의 경험상, 스크래치 파티션 때문에 ①이나 ②를 준비하는 사례는 거의 없었습니다. 때문에  Remote Syslog와 Network Dump를 구성하는 방법이 가장 무난할지 모르겠습니다. 단지 이것도 모든 로그를 보존할 수 있는 것이 아니기 때문에 vSAN을 도입할 경우는 돈을 들여 스크래치 파티션을 준비하든지 syslog 만을 준비하여 최소한의 로그라도 보존을 하든지를 고려해야될 필요가 있습니다. 개인적으로는 vRealize Log Insight에 로그를 전송하는 것을 추천하고 싶네요. 

 


● vsanDatastore의 미사용영역을 항상 30% 확보하도록 합니다.

운용시작후 vsanDatastore의 사용영역이 전체영역의 80%를 넘지않도록 주의하는 것은 널리 알려져 있습니다. (SIer에 따라서는 70%를 이용가능한 최대영역으로 안내를 하는 경우도 있죠)

이와 비슷한 내용일지 모르겠습니다만 vsanDatastore의 미사용영역은 항상 30% 정도 확보해두는 것을 추천합니다. FTT가 다른 복수의 스토리지 정책을 이용는 환경에서 스토리지 정책을 변경할 경우, 일시적으로 변경전의 스토리지 정책과 변경하는 스토리지 정책이 공존하게 됩니다.


예를들어 가상머신에 FTT=1의 스토리지 정책이 적용되어있다고 하죠 이 가상머신의 스토리지 정책을 erasure coding의 스토리지 정책으로 변경할 경우, 데이터의 변환이 끝날 때까지 RAID 1와 RAID 5가 공존하게 됩니다. RAID 5의 스토리지 정책으로 변경중 vsanDatastore의 영역이 부족하면 정책 변경은 실패합니다.


따라서 vsanDatastore의 미사용영역은 항상 30% 정도 남겨두도록 하는 것을 추천합니다.



● 최소 구성은 3 호스트, 하지만 4 호스트를 추천합니다.

네, 알고 있습니다. vSAN의 최소 구성의 호스트 수는 3 호스트입니다.(ROBO나 2 호스트 다이렉트 접속 구성을 제외) 지원도 문제없이 받을 수 있습니다.


하지만 3 호스트면 가상머신의 가용성 유지에 불안한 점이 있습니다. 특히 운용중의 리스크가 커지게 됩니다. 3 호스트 구성시는 1 호스트를 유지보수하더라도 FTT=1를 충족할 수 없게되어 가용성을 확보할 수 없게 되기 때문이죠.


1 호스트 유지보수중 다른 호스트에 장해가 발생할 경우는 거의 드물다고요? 이렇게 생각하시는 분들, 장해가 발생한 뒤에는 늦습니다. 저같으면 싫습니다. 매번 두근두근하면서 패치 적용하는 건... 흐흐 :)


호스트 장해에 대한 대비는 물론이지만, 운용시 유지보수의 편리성을 생각한다면 vSAN 클러스터는 최소 4 호스트 구성을 추천합니다.


 


● “중복제거와 압축” 기능의 유효시, 디스크 단위의 삭제는 않됩니다.

All-Flash 모드의 vSAN을 도입하여 ”중복제거와 압축”기능을 검토하고 계신 분들은 “중복제거와 압축” 기능은 디스크 그룹 단위로 구성된다는 것에 주의하시길... 디스크 그룹 단위로 구성이 되기 때문에 capacity SSD에 장애가 발생하면 해당 디스크 그룹을 일단 삭제, SSD 교환후 새롭게 작성을 해야됩니다.


운용을 시작하여 일정 시간이 경과후 발생하면 의외로 번거로운 문제가 될 수 있으므로 "중복제거와 압축"기능을 검토할 경우는 운용면에서의 부하도 충분히 검토를 하시길 바랍니다.


● vSAN을 구성하면 ESXi 호스트의 reboot는 시간이 걸립니다.

거의 포스팅에서도 소개를 했습니다만, vSAN의 호스트는 부팅시 vSAN 메타 데이터 테이블을 재작성합니다. (KB에 의하면 디스크 그룹당 최장 1시간이 걸릴 수도 있다고 합니다)

때문에 non-vSAN의 ESXi 호스트보다 시작에 시간이 걸립니다. 기동에 실패하여 에러가 표시되기 전까지는 인내심을 갖고 기다리기 바랍니다.


ESXi 호스트의 시작이내 재시작시에는 DCUI나 원격 콘솔에서 부팅 프로세스를 확인하는 것을 추천합니다.


● 가동중에 디스크를 뽑는 것은 장해 테스트라고 할 수 없습니다.

vSAN 도입직후 대부분 장해 테스트를 하실겁니다. 네트워크나 전원, 혹은 호스트 장해 테스트를 하시겠죠. 물론 디스크(cache 티어나 capacity 티어) 장해에 대해서도 테스트를 하실겁니다. 단지 디스크는 다른 장해 테스트와는 달리 간단히 장해 상태를 만들 수 없죠. 결국 가동중인 디스크를 뽑는 것이 일반적으로 이루어지고 있지 않을까 합니다.(과거에 저도 장해 테스트로 가동중인 디스크를 뽑는 방법을 소개한 적이 있습니다... )


이건 absent 상태가 되어 제대로 된 장해 테스트라고 할 수 없습니다.(물론 이 상태에서 ClomRepairDelay의 타임아웃이 되면 데이터의 동기가 실행되므로 결과적으로는 같을지 모르겠습니다...)


그렇다면 어떻게 해야되느냐...? Failure Testing을 이용하면 됩니다.


VMware 공식 문서인 이 Failure Testing에는 호스트 장해, 디스크 장해시의 동작에 대한 설명과 함께 디스트 장해를 발생시킬 수 있는 방법도 소개하고 있습니다.

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


위의 명령어를 이용하면 간단히 디스크를 Permanent Error 상태로 만들 수 있습니다. 장해 테스트를 하실 경우는 꼭 이용해보세요.


음... 원래 HCI의 디스크 장해 테스트의 목적은 "장해가 발생해도 서비스(가상머신)는 정지하지 않는 것을 확인"하는 것이라고 생각합니다만, 이상하게 "가상머신의 가용성을 어떻게 수복하는가"를 확인하는 쪽으로 바뀐 것 같네요. :)



● 격리 어드레스 변경후는 vSphere HA를 재유효화해야 됩니다.

이것도 이미 알고 계시리라 생각됩니다. vSAN을 구성하면 하트비트가 관리 네트워크로부터 vSAN 네트워크로 변경되죠. 따라서 호스트 격리시에 이용되는 격리 어드레스도 변경해줘야 됩니다. 격리 어드레스는 vSphere HA의 고급설정에서 변경이 가능합니다만 변경후 추가 작업이 필요합니다.


격리 어드레스의 변경은 vSphere HA를 일단 무효후 다시금 유효화해주지 않으면 반영되지 않습니다. 격리 어드레스를 변경한 뒤에는 반드시 vSphere HA를 재유효화해 주는 것을 잊지마세요. :)



 VCSA을 Easy Install로 설치하였을 경우는 vSAN 구성후 스토리지 정책을 적용해주세요.

vSAN 6.6부터 vSAN 클러스터상에 VCSA를 설치하는 것이 무지하게 편해졌습니다. VCSA 설치시 "새로운 vSAN 클러스터에 포함되는 ESXi 호스트에 설치" 옵션을 선택해주기만 하면 되죠. 간단히 싱글 호스트에 일시적으로 vsanDatastore를 구성, VCSA를 설치해줍니다. VCSA가 설치되면 남은 ESXi 호스트를 vSAN 클러스터에 추가해주면 vSAN 구성이 끝납니다. 간단하죠. :)

하지만 잘 생각해보세요. vsanDatastore 상에 가상머신(VCSA)를 설치했다는 말은 자동적으로 vSAN Default Storage Policy가 적용된다는 말이죠. vSAN Default Storage Policy는 FTT=1에 Stripe=1입니다. 이말은 최소한 3 호스트가 필요하다는 말이죠. 하지만 VCSA를 설치한 시점에서는 1 호스트밖에 없으므로 VCSA는 스토리지 정책이 적용되지 않은 상태가 됩니다.

 

Easy Install로 VCSA를 설치했을 경우는 vSAN 구성이 끝난 뒤에 잊지말고 스토르지 정책을 적용해주세요. 

 



● 컴포넌트 사이즈에는 최대치가 있습니다.

vsanDatastore에는 최대 62TB의 vmdk 화일을 작성할 수 있습니다. 최대 사이즈는 다른 스토리지와 다를바없습니다만 vSAN의 경우는 조금 특수합니다. vSAN은 최종적으로 capacity 디스크에 "컴포넌트"로 저장이 됩니다. 이 컴포넌트에는 최대 사이즈가 있어, 255GB가 최대 사이즈입니다. 255GB를 넘는 화일은 자동적으로 분할되어 복수의 capacity 디스크에 저장이 됩니다. 컴포넌트는 분할되어 각 정보는 메타데이터에 의해 관리됩니다. 예를들어 vmdk 화일 사이즈가 1TB의 경우, capacity 디스트에 저장되는 컴포넌트 수는 4 이상이 됩니다. FTT=1의 경우 8 이상이 되는거죠. 참고로 오브젝트는 분할되지 않습니다.

위의 그림처럼 가상머신에 3개의 vmdk 화일이 있다고 하죠. 스토리지 정책은 FTT=1입니다. 하드 디스크 1과 2는 100GB 정도입니다. 이에비해 하드 디스크 3은 약 400GB 정도됩니다. 하드 디스크 1과 2는 FTT=1의 정책이 적용되어 각각 2개의 컴포넌트가 각각 다른 호스트상에 저장되게 됩니다.

 

하드 디스크 3은 400GB 이므로 컴포넌트의 최대 사이즈를 넘습니다. 따라서 RAID 1의 안에 각각 RAID 0로 3개의 컴포넌트로 분할되어 저장되어 있는 것을 확인할 수 있습니다.(몇개의 컴포넌트로 분할될지는 화일의 사이즈에 따라서 달라집니다)


재미있죠? :)


거대한 가상머신을 작성할 경우는 이 컴포넌트의 구성이나 배치도 고려하는 것이 좋습니다.



 

이외에도 팁이 있으리라 싶습니다만, 생각나는건 이정도네요. vSAN의 도입이나 운용에 조금이나마 도움이 되었으면 합니다. :)