VMware vSphere 6.5中引入了自动空间回收功能,用鼠标右键单击VMFS存储,在弹出的快捷菜单中选择“编辑空间回收”,在弹出的“空间回收设置”对话框中,管理员可以设置回收的速率(如图1所示)。
图1 设置回收速率
在vSAN 6.7 U1 及更高版本中支持删除或移除文件将会释放文件系统内的空间。此可用空间会映射到某个存储设备,直到文件系统释放或取消映射该空间为止。vSAN 支持可用空间回收,也称为取消映射(UNMAP)操作。在执行诸如删除或迁移虚拟机、整合快照等操作时,可释放 vSAN 数据存储中的存储空间。
默认情况下vSAN禁用TRIM/UNMAP(剪裁/取消映射)功能。要在 vSAN 群集上启用TRIM/UNMAP功能,应该满足如下的条件:
(1)vSAN 6.7 U1及之后的版本。
(2)vSAN运行状态检查健康。
(3)使用ssh登录到vCenter Server,再登录到vCenter Server RVC,进入目标vSAN集群的路径下,使用RVC 命令vsan.unmap_support .–enable启用这一功能。
(4)重启虚拟机。
需要注意,在使用TRIM/UNMAP回收虚拟机的磁盘空间时,要求虚拟机的硬件版本大于13。对于Windows操作系统,Windows Server 2012之后的版本默认启用这一功能,可以使用下面Powershell命令查询,如图2所示。
Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\FileSystem" -Name DisableDeleteNotification
图2
如果要开启自动回收,可以执行如下命令,如图3所示。
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\FileSystem" -Name DisableDeleteNotification -Value 0
图3
(5)需要需要手动执行磁盘空间回收,在重启虚拟机之后,在VM里执行下面的命令或者Defrag或者直接通过图形调度磁盘清理任务(下面的C表示C盘):
Optimize-Volume -DriveLetter C -ReTrim -Verbose
(6)在 Linux 操作系统上,脱机取消映射通过 fstrim 命令执行,内嵌取消映射在使用 mount -o discard 命令时执行。
在 vSAN 群集上启用取消映射时,必须先关闭所有虚拟机的电源然后再打开电源。虚拟机必须使用虚拟硬件版本 13 或更高版本,才能执行取消映射操作。
本文通过具体的案例来介绍这一功能。
1 案例现状
某企业虚拟化环境由5台ESXi主机组成,使用vSAN共享存储架构。vCenter Server与ESXi版本是6.7.0 U3。该虚拟化环境中有台IP地址为192.168.223.238的虚拟机,安装的Windows Server 2012 R2的操作系统。该虚拟机E盘使用了6430GB,因为E盘空间不够,管理员在E盘删除了容量约3840GB的文件,E盘可用空间从原来的278GB变为3.92TB(如图4所示)。当前虚拟机共有4个磁盘分区,统计每个磁盘分区的总空间并减去可用空间,计算虚拟机的使用空间=(194-137)+(251-239)+(6.54-3.92)×1024+(7.99-4.51)×1024=6315GB≈6.17TB。
图4 在E盘删除
因为当前是vSAN共享存储架构,当前是混合存储架构,总体相当于RAID-10,虚拟机使用6.17TB,实际应该占用的空间约12.3TB左右。但是在vCenter Server中检查看到,该虚拟机实际占用了20.68TB的空间,有8.38TB的空间没有释放,如图5所示。
图5 检查IP地址为192.168.223.238虚拟机的占用空间
检查vSAN共享存储总空间和可用空间,总空间为39.12TB,可用空间为4.16TB,如图6所示。
图6 检查vSAN存储空间
出现这种情况,是IP地址为192.168.223.238的虚拟机中删除的磁盘文件的空间没有被真正释放。
2 在vCenter Server中启用unmap功能
在当前的案例中,vCenter Server的IP地址是192.168.223.220,SSO帐户名称为[email protected]。该vCenter Server的SSH功能已经启用。如果vCenter Server的SSH功能已经禁用,可以登录到vCenter Server的管理员界面(https://192.168.223.220:5480)来启用。
(1)使用ssh工具软件登录到vCenter Server。例如使用Xshell登录到192.168.223.220,使用root帐户和密码登录。在Command>后面输入shell进入#提示符。
(2)在#提示符后面输入rvc命令;在Host to connect to (user@host):提示中输入vCenter Server的IP地址192.168.223.220然后按回车键,此时会提示使用默认的用户名[email protected]登录,输入vCenter Server的SSO账户[email protected]的密码后,登录到vCenter Server的rvc界面,如图7所示。
图7 进入rvc界面
(3)进入rvc界面之后,输入cd 1进入192.168.223.220。然后执行ls,此时会显示vCenter Server中数据中心的名称,当前数据中心名称是Datacenter,执行cd 0进入数据中心。执行ls,会显示存储(storage)、主机(host)、网络(network)、storages、虚拟机(vm)等清单,执行cd 1进入host。执行ls,显示集群,当前显示有2个集群。执行cd 1进入名称为vSAN的集群。然后执行vsan.unmap_support . -e启用unmap,如图8所示。在为名称为vSAN的集群启用unmap后,执行exit退出。
图8 启用unmap
3 升级虚拟机硬件版本及回收磁盘空间
关闭IP地址为192.168.223.238虚拟机的电源,检查当前虚拟机硬件版本为14。用鼠标右键单击该虚拟机,在弹出的快捷菜单中选择“兼容性→升级虚拟机兼容性”。在弹出的“配置虚拟机兼容性”对话框中,在“兼容”下拉列表中选择“ESXi 6.7 Update 2及更高版本”,然后单击“确定”按钮。
此时IP地址为192.168.223.238的虚拟机硬件版本升级到15,如图9所示。当前虚拟机的存储使用情况为20.68TB。
图9 检查虚拟机兼容性
然后打开IP地址为192.168.223.238虚拟机的电源,在CMD命令提示窗口执行Powershell命令,进入Powershell界面,执行如下命令回收E盘空间:
optimize-volume -DriveLetter E -ReTrim -Verbose
该命令执行完成后,显示E盘的卷大小、已用空间、可用空间,如图10所示。
图10 回收E盘空间
IP地址为192.168.223.238虚拟机运行在IP地址为192.168.223.225的ESXi主机上,在vCenter Server中选中IP地址为192.168.223.225的ESXi主机,在“监控→vSAN→性能→虚拟机”中,在“剪裁/取消映射吞吐量”中显示了vSAN执行unmap时的截图,如图11所示。
图11 查看unmap截图
再次查看IP地址为192.168.223.238虚拟机占用的空间,已经从原来的20.68TB下降到13.81TB,释放了约6.87TB的空间,如图12所示。
图12 再次检查虚拟机占用存储空间
查看vSAN共享存储的可用空间,从原来的4.16TB上升到10.5TB,增加了6.34TB的空间,如图13所示。
图13 再次检查vSAN存储空间
【说明】
(1)这篇文章最初发表在《网络安全和信息化》杂志2022年第6期的第93~95页。
(2)相关图书《VMware vSAN超融合企业应用实战》
https://item.jd.com/12842654.html
(3)相关视频可以看
VMware vSAN 6.7实战演练
https://edu.51cto.com/sd/c6449
标签:TB,虚拟机,192.168,Server,磁盘空间,vCenter,置备,vSAN From: https://blog.51cto.com/wangchunhai/5825977