
题主在一台服务器上部署了 esxi6.7,磁盘大小 6.7TB 左右,使用 vcenter 创建了 6 个虚拟机,硬盘模式都是选择的厚制备延迟置零。 其中一台 win 虚拟机因为磁盘空间不足以满足使用需求,于是扩容成了 4T 的虚拟硬盘(厚制备延迟置零),再用分区助手扩容了分区,扩容后 win 可用空间还有 3TB 以上。此时看剩余宿主机磁盘空间还有 1TB 以上。用了几天后这台虚拟机突然宕机了,vcener 提示空间不足,浏览宿主机存储的确没空间了,剩 2MB 。删除了一个虚拟机后打开了这个 win 虚拟机,里面的 win 分区还有 2TB 多的剩余空间可用。问题来了,厚制备延迟置零不是事先就占好空间的吗?怎么宿主机空间还是越用越少。
1 dot2017 2020 年 8 月 23 日 windows 的磁盘读写机制造成的,在 windows 里删除掉的 0 字节块被 esxi 认为还是有“数据”的,不释放导致操作系统里有空间,但是 esxi 显示空间越来越少。微软有个零化工具可以强制释放的 另外,为什么不用精简配置呢,厚置备缺点实在太明显了。 |
2 whyorwhynot OP @dot2017 这样会导致一个 4TB 的 vmdk 实际会占用更多的宿主机空间吗。 当初创建虚拟机的时候没有注意,默认貌似就是厚制备的。。 |
3 dot2017 2020 年 8 月 23 日 @whyorwhynot 你要理解下精简和厚制备的概念。精简是实际用多少占多少,你分配的 vmdk 大小是上限大小。精简的一个作用是存储超分,提升存储利用率(空的大小可以让别的 vmdk 先用)。厚制备是上来 vmdk 给多大,就占多少。厚制备的优势是一定保证有你分配的空间可用,但是缺点就是不灵活。如果你存储规划的比较好(不超分),完全可以都配置为精简。 另外精简和厚制备可以转换的。你用一次 VC 的存储迁移就知道了。 |
4 dot2017 2020 年 8 月 23 日 补充下,厚制备也分两种:你这种延迟置零是一开始是用多少占多少,随着实际存储增加慢慢扩大 vmdk 的大小,最终到分配的 vmdk 大小,但不会像精简一样可以缩。另外一种厚制备上来就是是分配就占多少,所以你会发现初始化的时候很慢,因为 esxi 在完全格式化你所分配的 vmdk 空间。 |
5 whyorwhynot OP @dot2017 厚制备的优势是一定保证有你分配的空间可用。我使用的虚拟机都是厚制备延迟置零,vcenter 却在使用过程中提示我空间不足。我在扩容出那个 4T 的 vmdk 的时候,宿主机的空间就被划分出去了,显示还剩余 1TB 多的空闲存储。理论上我再怎么使用虚拟机的存储都不应该出现宿主机存储变少的情况了,使用过程中 vmdk 的大小始终都是 4TB,可是宿主机的剩余空间却在不断缩小。另外我一直往这个虚拟磁盘中写入数据,没有数据删除操作。麻烦答主这么认真答疑了。 |
6 dot2017 2020 年 8 月 24 日 @whyorwhynot 你可以统计下你现在所有虚拟机的 vmdk 配置的总大小是多少,我怀疑你最开始的计算可能就有误了。注意前面提到的,“厚制备延迟置零”(不是“厚制备”)占用空间是随着实际使用增长而增长,但不随使用降低而不回收。所以最开始的时候你看到 ESXI 显示的剩余空间,应该不是整个 vmdk 占掉后的空间。但后面随着你逐渐使用,慢慢就把空间分配出去了,直到 datastore 空间不足。 另外排查下是不是有历史快照保留。 |
8 whyorwhynot OP @dot2017 用 vcenter 看了下该虚拟机置备空间情况,貌似破案了。这个 win 虚拟机的 vmdk 是 4TB 的,但是置备空间是 8TB,已用空间是 4TB 。在扩容 vmdk 后为了防止扩容分区失败,我对整个 win 虚拟机关机做了快照,瞬间就成功了,感觉怎么也不会快照占用这么多空间啊。 |
9 whyorwhynot OP @kokutou 什么情况。。 |
10 dot2017 2020 年 8 月 24 日 @whyorwhynot 呃,快照是算变化的数据块的,包括增删改。你这是数据变化量很大吗 |
11 whyorwhynot OP @dot2017 做了快照后连续写了 1.5TB 左右的数据,没有删除、更改数据。。。 |