안녕하세요, 오랜만에 글을 올립니다. 당분간은 VMware 중 vSAN 에 관련된 포스트를 주로 올릴려고 합니다.
vSAN 을 도입하는 경우, vSAN 이 ESXi 내에 함께 통합되어 있기 때문에, vSAN 동작을 위해서 필요로 하는 메모리의 양이 있습니다.
기본적으로 vSAN 6.0 – 6.5 버전들의 메모리 사용량은 아래와 같은 공식으로 계산됩니다.
BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize)))
부수적으로 설명을 드리면,
BaseConsumption : vSAN 구성시 기본적으로 사용하는 고정적인 사용량. 현재 버전에서는 3GB 이며, vSAN directory 및 메타데이타, 메모리 캐쉬를 저장하는 공간입니다.
NumDiskGroups : 호스트당 디스크 그룹의 숫자 입니다. 1~5 가 될 수 있겠습니다.
DiskGroupBaseConsumption : 각각의 디스크 그룹이 사용하는 고정적인 사용량이며, 현재는 500MB 입니다. 디스크 그룹레벨에서의 온라인 오퍼레이션을 위해서 리소스를 할당할 때 사용합니다.
SSDMemOverheadPerGB : SSD 의 GB 당 사용하는 고정적인 사용량입니다. Hybrid configuration 에서는 2MB 이고, ALL flash 구성에서는 7MB 입니다. Write buffer 와 read cache 로 인하여 변경되는 SSD 내의 Block 을 트래킹하기 위해 사용됩니다.
SSDSize : SSD 용량입니다. GB 단위 입니다.
계산 예제는 다음과 같습니다.
- 1개의 디스크 그룹, Hybrid Configuration, SSD 용량은 400GB
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize)))
- 3GB + (1 x ( 500MB + (2MB x 400))) = 3GB + 1 x (500MB + 800 MB) = 3GB + 1300MB = 4.3GB
- 3개의 디스크 그룹, Hybrid Configuration, SSD 용량은 400GB
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize)))
- 3GB + (3 x ( 500MB + (2MB x 400))) = 3GB + 3 x (500MB + 800 MB) = 3GB + 3900MB = 6.9GB
- 1개의 디스크 그룹, All flash Configuration, SSD 용량은 400GB
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize)))
- 3GB + (1 x ( 500MB + (7MB x 400))) = 3GB + 1 x (500MB + 2800 MB) = 3GB + 3300MB = 6.3GB
- 3개의 디스크 그룹, All flash Configuration, SSD 용량은 400GB
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize)))
- 3GB + (3 x ( 500MB + (7MB x 400))) = 3GB + 3 x (500MB + 2800 MB) = 3GB + 9900MB = 12.9GB
클러스터내의 호스트가 32대를 넘어가면 BaseConsumption 이 3.3GB 로 증가합니다.
만약 호스트의 메모리가 32GB 가 되지 않으면 다음과 같이, 사용하는 메모리의 양이 Scale down 되며, 계산공식에 다음이 추가됩니다.
(BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize))) ) * SystemMemory / 32
위의 계산 예제에 적용을 하면 (호스트의 메모리는 16GB 로 가정하겠습니다.)
- 1개의 디스크 그룹, Hybrid Configuration, SSD 용량은 400GB
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize))) * SystemMemory / 32
- (3GB + (1 x ( 500MB + (2MB x 400)))) * 16 / 32 = (3GB + 1 x (500MB + 800 MB)) / 2 = (3GB + 1300MB) / 2 = 2.15GB
- 3개의 디스크 그룹, Hybrid Configuration, SSD 용량은 400GB
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize))) * SystemMemory / 32
- (3GB + (3 x ( 500MB + (2MB x 400)))) * 16 / 32 = 3GB + 3 x (500MB + 800 MB) / 2 = 3GB + 3900MB = 3.45GB
- 1개의 디스크 그룹, All flash Configuration, SSD 용량은 400GB
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize))) * SystemMemory / 32
- (3GB + (1 x ( 500MB + (7MB x 400)))) * 16 / 32 = 3GB + 1 x (500MB + 2800 MB) / 2 = 3GB + 3300MB = 3.15GB
- 3개의 디스크 그룹, All flash Configuration, SSD 용량은 400GB
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize))) * SystemMemory / 32
- (3GB + (3 x ( 500MB + (7MB x 400)))) * 16 / 32 = 3GB + 3 x (500MB + 2800 MB) / 2 = 3GB + 9900MB = 6.45GB
vSAN 6.6 에는 해당되지 않는 내용이니 참고하시기 바랍니다.
(2017.08.22 update)
ESXi 6.0 update 3 및 vSAN 6.6 에서는 아래와 같이 변경되었습니다.
BaseConsumption +
(NumDiskGroups * (DiskGroupBaseConsumption + (SSDMemOverheadPerGB * SSDSize))) + (NumCapacityDisks * CapacityDiskBaseConsumption)
BaseConsumption = 5426 MB
DiskGroupBaseConsumption = 636 MB
SSDMemOverheadPerGB (hydrid) = 8 MB
SSDMemOverheadPerGB (allflash) = 14 MB
CapacityDiskBaseConsumption= 70 MB
위의 변경된 내용으로 다시 계산을 해보면
- 1개의 디스크 그룹, Hybrid Configuration, SSD 용량은 400GB , 각 Diskgroup 당 Capacity disk 는 3개
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize))) + (NumCapacityDisks * CapacityDiskBaseConsumption)
- 5426MB + (1 x ( 636MB + (8MB x 400))) + (3 * 70MB)=5426MB + 1 x (636MB + 3200MB) + 210MB = 5426MB + 3836MB + 210MB = 9472MB
- 3개의 디스크 그룹, Hybrid Configuration, SSD 용량은 400GB, 각 Diskgroup 당 Capacity disk 는 3개
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize))) + (NumCapacityDisks * CapacityDiskBaseConsumption)
- 5426MB + (3 x ( 636MB + (8MB x 400))) + (9 * 70MB) = 5426MB + 3 x (636MB + 3200MB) + 630MB = 5426MB+ 11508MB + 630MB = 17564MB
- 1개의 디스크 그룹, All flash Configuration, SSD 용량은 400GB, 각 Diskgroup 당 Capacity disk 는 3개
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize))) + (NumCapacityDisks * CapacityDiskBaseConsumption)
- 5426MB + (1 x ( 636MB + (14MB x 400))) + (3 * 70MB) = 5426MB+ 1 x (636MB + 5600 MB) + 210MB = 5426MB + 6236MB + 210MB= 11872MB
- 3개의 디스크 그룹, All flash Configuration, SSD 용량은 400GB, 각 Diskgroup 당 Capacity disk 는 3개
- BaseConsumption + (NumDiskGroups x ( DiskGroupBaseConsumption + (SSDMemOverheadPerGB x SSDSize))) (NumCapacityDisks * CapacityDiskBaseConsumption)
- 5426MB + (3 x ( 636MB + (14MB x 400))) + (9 * 70MB) = 5426MB + 3 x (636MB + 5600 MB) + 630MB= 5426MB + 19038MB + 630MB = 25094MB
KB 로도 확인하실 수 있습니다.
https://kb.vmware.com/kb/2113954
[…] 필요한 메모리 고려 사항에 대해 실제로 우수한 KB 를 제공합니다. 참조 : http://byounghee.ivyro.net/2017/04/21/vsan-memory-consume/ 참조 : […]