VM虚拟机分配时,磁盘模式会有Thin provisioning 模式
当虚拟机OS内空间使用过之后,即使删除了部分文件,也只是释放了OS层面的空间,并没有真正的释放esxi后所连接的存储空间。
本人整理了关于回收的方式,步骤如下:
1. 确保磁盘没有快照。
2. VM内空间释放
-
windows
在 Windows 虚拟机中,使用SDelete,将所有未使用的空间置零。
SDelete工具下载地址https://download.sysinternals.com/files/SDelete.zip
SDelete 命令的语法为:
-z 清理可用空间
SDelete -z driveletter
(例:SDelete -z C:)
-
linux
dd if=/dev/zero of=/[mount_path]/zeroes
rm -f /[mount_path]/zeroes
注意:将所有未使用块置零会使磁盘增长到其最大大小,并且会将其转换为已置零磁盘。如果原始磁盘是精简置备磁盘,请确保数据存储上有足够空间以允许磁盘增长到其最大大小。
3. 关闭虚拟机或暂时从虚拟机中移除虚拟磁盘以确保磁盘未在使用。
4. SSH登陆EXSI主机(需要在主机->配置->安全配置文件->SSH 启动服务)
vmkfstools -K /vmfs/volumes/vm-name.vmdk
(有多个挂载盘时,分别处理多个vmdk,例vmkfstools -K /vmfs/volumes/vm-name_1.vmdk. )
注:!!! 不是-flat.vmdk!!!!!!
注意:punchzero (vmkfstools -K) 命令与基于 NFS 的 VMFS 数据存储不兼容。
文末注:改方式linux 已经测试可用,并且能保留OS内部数据