前言:
因之前没合理为虚拟机分配磁盘空间给了1TB,认为精简置备用多少就占多少,长时间也不清空回收站,目前需将机械盘存储迁移到全固态存储,清理垃圾文件后实际使用200GB,但该vmdk依然800多GB大,如直接“迁移”都要在新存储占用这800GB多,还有多台这类情况,只好先做收缩vmdk再迁移。
先说下三种虚拟磁盘类型的认识
1. 厚置备延迟置零(zeroed thick) #默认选项
在创建时为虚拟磁盘分配所需空间(真实地占用物理存储空间),当虚拟机在有写入的时,再按量将其置零。
2 厚置备置零(eager zeroed thick)
在创建时为虚拟磁盘分配所需空间(真实地占用物理存储空间),创建过程中作置零操作,所以创建磁盘时间长。
3 精简置备(thin)
无论磁盘分配多大,实际用多少就占用物理存储多少,当虚拟机有写入时,需等待分配空间和置备完成后才能进行操作,对于IO频繁造成性能会有所下降,好处节省了存储空间,但虚拟磁盘vmdk文件随着置备量会只增不减。
解决精简置备只增不减
精简置备vmdk文件容量是随着写入置备增加,即虚拟机某个时间使用磁盘达800GB(历史峰值),删除600GB文件后,甚至格式化磁盘,删除磁盘分区,vmdk文件依然是800GB。对于虚拟机迁移简直就是灾难,首先新存储要准备这么大的物理存储空间,其次这么大的vmdk文件迁移耗的时间也是长。
回收空间思路:
将虚拟机上剩余未使用的600GB,填0操作,再使用ESXI工具vmkfstools移除置零的块,实现收缩VMDK容量。
【严重注意】即将进行置零的空间容量要比物理存储剩余容量大,不然这就是炸盘了
针对win系统填0操作,
Windows不会自动将已删除的块清零。Microsoft提供了一个工具SDelete,将整个磁盘剩余可用空间填0。
1. 下载SDelete
2. 运行sdelete.exe -z 盘符
运行过程比较慢,耐心等待,直到完成该过程。请注意,在此过程中,该虚拟磁盘VMDK文件将增长到精简置备分配完整大小。
针对linux系统填0操作,
Linux也没有将删除的块归零。有多种工具可用于创建归零块,最着名的工具是dd。
1.用df识别可用空间
2.用dd填充可用空间
如上图需将磁盘sdb1可用剩余空间6.0GB,使用dd填0充满。
随后将生成的文件删除掉,这里的6144是1024*6得出,/dev/zero提供无穷尽地提供0。
vmkfstools 操作实例收缩VMDK文件
1.关闭虚拟机电源,或断开要收缩的虚拟磁盘
2.使用SSH连接ESXi主机
3.导航到虚拟机文件夹
4.使用du -ah * 验证磁盘使用情况
5.运行 vmkfstools -K [磁盘]
6.使用du验证磁盘使用情况
注意:
一个磁盘由磁盘.vmdk和 磁盘-flat.vmdk的两个.vmdk组成,,其中磁盘.vmdk文件很小,存放了虚拟磁盘一些配置信息,实际数据都存放在flat.vmdk文件中。但转换时是使用vmdk文件而不是flat.vmdk文件
总结以上过程:
先将可用磁盘空间都填零操作,再于ESXI的shell中使用vmkfstools -K移除置零的块,回收膨胀的精简置备空间。
注意: vmkfstools -K并不能对快照vmdk文件如HDD-RedHat-7.3-vv-000002.vmdk清零操作,需考虑将快照移除再操作。
vmdk文件容量减少了,迁移就不是问题了,迁移方式很多,在此就不详细说明了,
如vmkfstools -i克隆、OVF方式、复制vmdk文件、直接“移至”、还有DiskGenius克隆分区,甚至ghost也行。
————————————————
版权声明:本文为CSDN博主「endzhi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
相关阅读:
转载文章,来源:https://blog.csdn.net/endzhi/article/details/89818324