admin 管理员组

文章数量: 1184232

VSAN默认存储策略(vSAN Default Storage Policy)的磁盘置备类型为精简置备,这会导致一个问题就是我在虚拟机上删除了文件之后,vmdk文件以及虚拟机磁盘占用还是没有减小,这时候需要我们配置一下回收空间

在开始操作前请保存vcenter以及esxi均开启了ssh

目录

1.什么是 UNMAP?

2.VSAN开启磁盘回收

3.ESXI开启空间回收

4.windows虚拟机进行磁盘回收

5.报错解决-类型43022

6.查看效果


1.什么是 UNMAP?

要理解这条命令的重要性,需要先了解 UNMAP 是什么:

  • 精简置备(Thin Provisioning):vSAN 默认使用精简置备模式。这意味着虚拟机磁盘(VMDK)向操作系统报告的大小(例如 100GB)可能大于在物理存储上实际占用的大小(例如可能只用了 20GB)。这是一种节省存储空间的技术。

  • 空间回收(Space Reclamation):当客户机操作系统(如 Windows Server 或 Linux)删除文件时,这个操作最初只发生在操作系统层面。底层的存储系统(这里是 vSAN)并不知道有些数据块已经不再需要了,因此它仍然会为那些已删除的文件保留空间。

  • TRIM/UNMAP 命令:为了解决这个问题,现代操作系统支持一种称为 TRIM(在 SCSI 体系中叫 UNMAP)的指令。当用户在操作系统内删除文件后,操作系统会向底层的存储设备发送一个 UNMAP 命令,通知它哪些数据块已经空闲,可以回收了。

  • vSAN 的响应:当 vSAN 接收到来自虚拟机的 UNMAP 命令后,它会将这些数据块标记为“可回收”。随后,vSAN 会在后台任务中真正地将这些空间释放回存储池,从而使这些空间可供其他虚拟机使用。

2.VSAN开启磁盘回收

首先我们登录vcenter(使用root账号登录),登录后我们输入shell进入命令行

进入命令行后我们输入rvc命令

RVC 的核心作用
简单来说,RVC 是一个功能极其丰富的命令行管理和故障诊断工具,专门为 vSphere 环境(特别是 vCenter Server)设计。 它提供了比标准 vSphere Web Client 或 HTML5 Client 更底层、更批量化和更自动化的操作能力

会提示我们需要输入user@host,也就是我们登录vcenter的账号以及IP地址,我的账号是administrator@test,vcenter管理ip是172.16.201.74;所以我输入administrator@test@172.16.201.74

登录好之后,我们通过ls以及cd命令进入到我们VSAN集群的路径下,如果数据中心的名称为默认的Datacenter,集群名称为VSAN的话,那么完全的路径应该是 /Vcenter管理IP/Datacenter/computers/VSAN,所以我的路径就是/172.16.201.74/Datacenter/computers/VSAN

如果你的数据中心名称不是Datacenter,集群名称不是VSAN的话,就根据实际的情况利用cd命令进入路径。进入到VSAN集群的路径下,使用如下命令开启空间回收

#开启UNMAP回收空间
vsan.unmap_support . -e

官方解释如下链接:
使用 SCSI UNMAP 回收空间https://techdocs.broadcom/cn/zh-cn/vmware-cis/vsan/vsan/7-0/vsan-adminstration-7-0/increasing-space-efficiency-in-a-vsan-cluster/reclaiming-stroage-space-in-vsan-with-scsi-unmap.html

3.ESXI开启空间回收

通过ssh登录到esxi服务器,输入一下命令开启空间回收

#在 ESXi 主机上启用(开启)虚拟机客户机操作系统发起的存储空间回收(UNMAP)功能。
esxcfg-advcfg -s 1 /VSAN/GuestUnmap
#查询并显示 ESXi 主机上 vSAN 的全局 UNMAP(空间回收)功能是开启还是关闭,0为关闭,1为开启
esxcfg-advcfg -g /VSAN/Unmap

进行完如上设置后,把需要进行空间回收的虚拟机关机后再开机(不是重启,一定是关机后开机)

4.windows虚拟机进行磁盘回收

win10以及server2012后的版本都是默认开启自动回收的,所以我们等待即可,查看以及设置自动回收的命令如下:

#检查 Windows 操作系统是否被配置为允许向底层存储(如 vSAN)发送空间回收(TRIM/UNMAP)指令0代表启用删除通知,1代表禁用,0代表启用
Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\FileSystem" -Name DisableDeleteNotification
#开启自动空间回收
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\FileSystem" -Name DisableDeleteNotification -Value 0 

如果空间确实不够用了非常紧急,可以尝试进行手动回收,powershell命令如下:

#手动触发存储空间回收操作(TRIM/UNMAP),里面的C代表C盘
Optimize-Volume -DriveLetter C -ReTrim -Verbose
#如果清理的磁盘类型不是固态,删除-ReTrim
Optimize-Volume -DriveLetter C  -Verbose

请用管理员权限打开powershell运行命令,把C更换为需要进行空间回收的盘符

5.报错解决-类型43022

PS C:\Users\Administrator> Optimize-Volume -DriveLetter C -ReTrim -Verbose                                              详细信息: 正在调用 系统 (C:) 上的 重新剪裁...                                                                           详细信息: 重新剪裁:  100% 完成。                                                                                        Optimize-Volume : The volume optimization operation requested is not supported by the hardware backing the volume.      Activity ID: {e8ac751b-3033-4e0d-b14f-c0127d738c49}                                                                     所在位置 行:1 字符: 1                                                                                                   + Optimize-Volume -DriveLetter C -ReTrim -Verbose                                                                       + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                           + CategoryInfo          : NotSpecified: (StorageWMI:ROOT/Microsoft/...age/MSFT_Volume) [Optimize-Volume], CimExcep     tion                                                                                                                     + FullyQualifiedErrorId : StorageWMI 43022,Optimize-Volume

机械硬盘不加-ReTrim参数,一般来说vmware虚拟机默认的磁盘控制器为SCSI,简单理解也就是机械

修改命令为:

#适用于磁盘类型为机械的情况
Optimize-Volume -DriveLetter C  -Verbose

6.查看效果

可以在监控里面看到取消映射(官网说辞为取消映射,上文中的官网链接有说明到)的IOPS

本文标签: 磁盘 VSAN