前言
虚拟主机在初期创建的时候采取的是“精简置备”模式,实际磁盘占用空间会在初期设定的限定值内、且会随着系统内文件增量的累积而逐渐增长。总体实际使用空间和vmdk文件所占用的空间相差过多,大量可用存储空间无法释放,造成资源的浪费。
介绍
VMFS 文件系统自推出以来已发行多个版本。目前,ESXi支持 VMFS5 和 VMFS6。传统存储下的精简模式回收简单来说就是VMFS之间存储版本的问题。自动空间回收功能仅支持在VMFS6中使用,版本对比参考以下内容:
特性和功能 | VMFS5 | VMFS6 |
对 ESXi主机 6.5 和更高版本的访问 | 是 | 是 |
对 ESXi主机 6.0 和更早版本的访问 | 是 | 否 |
每个主机的数据存储 | 512 | 512 |
512n 存储设备 | 是 | 是(默认) |
512e 存储设备 | 是。本地 512e 设备上不支持。 | 是(默认) |
4Kn 存储设备 | 否 | 是 |
自动空间回收 | 否 | 是 |
通过 esxcli 命令进行手动空间回收。请参见手动回收累积的存储空间。 | 是 | 是 |
从客户机操作系统回收空间 | 受限制 | 是 |
GPT 存储设备分区 | 是 | 是 |
MBR 存储设备分区 | 是 适用于之前从 VMFS3 升级的 VMFS5 数据存储。 | 否 |
每个 VMFS 数据区的存储设备大于 2 TB | 是 | 是 |
支持具有大容量虚拟磁盘或磁盘大于 2 TB 的虚拟机 | 是 | 是 |
支持 1 KB 的小文件 | 是 | 是 |
支持 ATS 的存储设备默认使用“仅限 ATS”锁定机制。请参见VMFS 锁定机制。 | 是 | 是 |
块大小 | 标准 1 MB | 标准 1 MB |
默认快照 | 虚拟磁盘的 VMFSsparse 小于 2 TB。 虚拟磁盘的 SEsparse 大于 2 TB。 | SEsparse |
虚拟磁盘模拟类型 | 512n | 512n |
vMotion | 是 | 是 |
跨不同数据存储类型的 Storage vMotion | 是 | 是 |
High Availability 和 Fault Tolerance | 是 | 是 |
DRS 和 Storage DRS | 是 | 是 |
RDM | 是 | 是 |
关于VSAN存储的磁盘回收问题需要满足以下几点
- ESXi版本要大于等于6.7U1
- 虚拟机是精简置备
- Windows虚拟机硬件版本大于等于11(WindowsServer2012以上版本支持自动回收)
- Linux虚拟机硬件版本大于等于13(默认不支持,主动用fstrim,被动要挂载discard参数)
- 启用UNMAP后必须在vCenter控制台重启虚拟机
案例
一、在vCenter Server中进入RVC模式
二、在RVC中使用以下命令启用unmap功能(vSAN为本案例集群名称)
vsan.unmap_support vSAN -e
三、检查虚拟机占用存储空间
四、检查虚拟机是否已经启用unmap功能
Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\FileSystem" -Name DisableDeleteNotification
五、若未开启,可使用以下命令启用unamp
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\FileSystem" -Name DisableDeleteNotification -Value 0
六、打开虚拟机控制台,进入Powershell界面,执行如下命令回收D盘空间:
Optimize-Volume -DriveLetter D -ReTrim -Verbose
七、再次检查虚拟机占用存储空间
空间回收完成