你的存储空间被谁“吃”掉了?

春节七天乐,少不了亲朋好友大聚会,山珍海味面前,推杯换盏之间,“吗丁啉”和“健胃消食片”两兄弟常伴左右。年假过完,看着自己隆起的小肚腩,想必很多朋友都想释放掉新增的那一堆“米其林”。
其实,很多情况下,存储容量就像我们的肚腩过年一样,不停地被塞入各种数据,最后造成了存储“消化不良”。尤其在如今虚拟化大行其道的环境下,虚拟机的创建与删除比我们推杯换盏还快。在我们常用的“主机+VMware+存储” 环境下,出于业务要求,需要创建n多个虚拟机。使用一段时间后,大部分虚拟机要被删除,再重新创建。如此下来,我们常常会发现一个怪现象,在虚拟化层面,存储空间占用不是很多,但存储端空间已显示快满了,最终导致的结果是存储无法写入新的虚拟机

你的存储空间 被谁“吃”掉了?
举个例子,下图是一个客户生产环境截图:

VMware端显示,这个SC4020-1-7TB的LUN实际使用空间为6.84TB-3.61TB=3.2TB,存储端显示为5.7TB(磁盘占用)-1.44TB(RAID开销)=4.26TB。VMware端

存储端

居然有将近1个TB的空间“消失”了,至于消失的原因嘛,请看下图:
通常情况下,操作系统对文件做的修改和删除仅仅是在文件头做了标记,而非彻底删除改动部分所占用的存储Block块。新增文件时,优先占用了磁盘的空位置,结果造成前端操作了很多删除和改动的操作,而存储的空间未能被真正释放,使得存储越用越满,甚至导致正常的写入都受到影响。
ESXi+白金服务 专治各种“消化不良”
如何让存储空间得到真正释放,今天我们主要针对当前最常用的VMware环境来举例。
方法一
对于古老的版本(ESXi5.0以前),升级吧!这个级别就像今天主流系统为Windows10,你却还在用Windows 98。从ESXi 5.0开始,VMware增加了对存储VAAI的支持。

首先,我们通过命令来参考存储是否支持空间回收功能。

在ESXi主机shell或ssh的命令行下面:通过命令验证

#esxcli storage core device vaai status get

注意看最后一行提示,如果是unsupported,说明您的存储设备不支持空间回收功能。

如果是Delete Status:supported,那么请继续。
对于部分坚持的Windows XP的用户,环境是5.0~5.1,VMware官方不太建议使用该功能,虽然可以在ESXi下通过一条叫做vmkfstools -y Percentage的命令实现,(percentage是百分比,代表想回收的空间比率)。示例如下:
# cd /vmfs/volumes/Datastore1# vmkfstools -y 60

参考链接
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2014849
在主流的5.5~6.0环境下,可以通过命令实现esxcli storage vmfsunmap -l VolumeName譬如前文中示例的环境下:

#esxcli storage vmfsunmap -l SC4020-1-7TB

运行该命令前:

运行该命令后:


通过大约半小时的等待,我们在存储上成功回收了1.2TB的空间。
参考链接
https://kb.vmware.com/s/article/2095589?r=2&Quarterback.validateRoute=1&KM_Utility.getArticleData=1&KM_Utility.getGUser=1&KM_Utility.getArticleLanguage=1&KM_Utility.getArticle=1

当然,一劳永逸的方法也是存在的。其实ESXi在5.5以后的版本中,内嵌了自动空间回收的开关,但默认是关闭的。通过图形界面,就可以将其打开。
方法二
如果认为方法一比较复杂、困惑,最简单的方法是直接升级至ESXi 6.5、ESXi6.5,默认支持并开启了空间回收功能。或许您还存在另一种担心,担心会带来“有其他并发症”,那么请移步方法三,终极绝招。

方法三
一般情况下,VMware提供的服务为5*8级别服务,软硬件服务分开,很多故障用户需要自行查询KB。但是,如果您采用的是Dell EMC OEM版VMware的话,您可享受到的是7*24小时服务,配合Dell EMC白金服务,您可以获得最完善的售后服务,医治各种 “并发症”。记住,Dell EMC OEM版VMware+白金服务,私人医生般呵护,除了帮你解决身体问题(硬件),还会帮你提供膳食建议(OEM软件)

春天来了,也让你的存储瘦瘦身吧,业务运转不堵心!