概述
今天一哥们找到我,说他有个三台服务器组的vSAN集群,发现还没开始跑业务,内存开销就去了60多个GB,平均每台主机莫名其妙就去了20多GB内存,如下图:
硬件清单
DELL R630 3台,分别是
- A:E5-2680 v4 *2 /32G *3 DDR4 ECC / 1.2T SAS *6 / 800G SSD *2 / 128G M2 SSD *1
- B:E5-2680 v4 *2 /32G *3 DDR4 ECC / 1.2T SAS *6 / 800G SSD *2 / 128G M2 SSD *1
- C:E5-2680 v4 *2 /32G *2 DDR4 ECC / 1.2T SAS *6 / 800G SSD *2 / 128G M2 SSD *1
原因
其实关于vSAN内存消耗,官方有明确的计算公式的:
vSANFootprint = HOST_FOOTPRINT + NumDiskGroups * DiskGroupFootprint
DiskGroupFootprint = DISKGROUP_FIXED_FOOTPRINT + DISKGROUP_SCALABLE_FOOTPRINT + CacheSize * CACHE_DISK_FOOTPRINT + NumCapacityDisks * CAPACITY_DISK_FOOTPRINT
- HOST_FOOTPRINT:每个 ESXi 主机的 vSAN 消耗的固定内存量(不管磁盘组为何)
- NumDiskGroups:主机中的磁盘组数。(范围 1-5)
- DiskGroupFootprint:分配给主机中每个单独磁盘组的内存量。
- NumCapacityDisks:每个磁盘组中的容量磁盘数。
- CAPACITY_DISK_FOOTPRINT:每个容量磁盘分配的内存量(无论磁盘大小如何)。
- DISKGROUP_FIXED_FOOTPRINT:分配给主机中每个单独磁盘组的固定内存量。
- DISKGROUP_SCALABLE_FOOTPRINT:根据 ESXi 主机的物理内存量分配给每个单独磁盘组的内存量
- CacheSize:缓存磁盘大小,以 GB 为单位(对于 SSD,范围为 0-600;对于混合配置,范围为 0-2 TB)CACHE_DISK_FOOTPRINT:每 GB 缓存磁盘分配的内存量。
对于以上参数,部分参数具有常量数值
All-Flash
- HOST_FOOTPRINT = 8620 MB
- CAPACITY_DISK_FOOTPRINT = 240 MB (ALL_FLASH)
- CACHE_DISK_FOOTPRINT = 15 MB (ALL_FLASH)
- DISKGROUP_FIXED_FOOTPRINT = 8420 MB (ALL_FLASH) *
Hybrid
- CAPACITY_DISK_FOOTPRINT = 300 MB (HYBRID)
- CACHE_DISK_FOOTPRINT = 10 MB (HYBRID)
- DISKGROUP_FIXED_FOOTPRINT = 7840 MB (HYBRID)
- DISKGROUP_SCALABLE_FOOTPRINT = 0.5% of system memory **
注意:对于启用仅压缩功能的磁盘组,每个容量磁盘需付出 39.5 MB 的额外成本。
对于启用去重功能的磁盘组,每个磁盘组需付出 120 MB 的额外成本。
对于混合配置,可扩展的占用空间将是系统内存的 0.5% 或缓存磁盘大小的 0.2%(以较小者为准)。
全闪存的缓存磁盘上限为 600 GB,因此,使用大于 600 GB 的 SSD 将不会消耗额外的内存。该公式假设使用的是同构磁盘组,即磁盘的数量和大小在主机的磁盘组之间相同。对于异构磁盘组,必须单独计算并汇总每个磁盘组的 DiskGroupFootprint
。
对于刚刚的配置实例,我们可以计算
公式:
HOST_FOOTPRINT + ( NumDiskGroups * ( DISKGROUP_FIXED_FOOTPRINT + DISKGROUP_SCALABLE_FOOTPRINT + ( CacheSize * CACHE_DISK_FOOTPRINT) + NumCapacityDisks * CAPACITY_DISK_FOOTPRINT))
计算结果:
7840 +(7840 + 0.5% * 96 * 1024+600 * 10+ 2 * 300)= 22771.52MB
当前主机配置的开销在22GB左右,还应当考虑ESXi主机的正常开销。
总结
根据计算公式得出的数据和实际消耗的内存相差不大,证明该情况属于正常现象。