ESXI精简thin磁盘容量回收-vmkfstools

3 篇文章 0 订阅
3 篇文章 1 订阅

前言:

        因之前没合理为虚拟机分配磁盘空间给了1TB,认为精简置备用多少就占多少,长时间也不清空回收站,堆出了占用空间高峰,目前剩余存储空间告急,清理垃圾文件后实际使用200GB,但存储浏览器中该vmdk依然800多GB大,需收缩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 microsoft.sdelete

2. 运行sdelete.exe -z 盘符

运行过程比较慢,耐心等待,直到完成该过程。请注意,在此过程中,该虚拟磁盘VMDK文件将增长到精简置备分配完整大小。

针对linux系统填0操作,

Linux也没有将删除的块归零。有多种工具可用于创建归零块,最着名的工具是dd。

1.用df识别可用空间

2.用dd填充可用空间

如上图需将磁盘sdb1可用剩余空间6.0GB,使用dd填0充满。

dd  bs=1M  count=6144  if=/dev/zero  of=/opt/dd-file  

随后将生成的文件删除掉,这里的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实战

移除置零的块转换至精简备置:

命令 vmkfstools -K  A.vmdk 

使用 vmkfstools -K 将精简、zeroedthick 或 eagerzeroedthick 虚拟磁盘转换成移除了置零块的精简磁盘,解除分配所有置零的块,并仅保留含有效数据的块,得到虚拟磁盘为精简格式,也达到了收缩VMDK容量作用。  

精简置备转换至厚置备置零:

命令  vmkfstools --inflatedisk  A.vmdk 

  --inflatedisk 可将磁盘未置零部分都置零。vmdk文件容量将达到分配空间最大值。

厚置备延迟置零转换至厚置备置零:

命令  vmkfstools --eagerzero  A.vmdk 

虚拟磁盘改名

命令  vmkfstools -E  A.vmdk  B.vmdk (别对受快照磁盘操作)

删除虚拟磁盘

命令  vmkfstools -U  C.vmdk

创建虚拟磁盘

命令  vmkfstools -c 8G E.vmdk             (默认厚置备延迟置零格式)

命令  vmkfstools -c 8G -d thin  Athin.vmdk  (容量单位mkg不分大少写;-d 可选zeroedthick|eagerzeroedthick|thin)

初始化虚拟磁盘

命令  vmkfstools -w  A.vmdk 

写入零数据以将其虚拟机磁盘清空,达到初始化磁盘,磁盘分区也会被删除,完毕后,磁盘类型为厚置备置零)

扩展虚拟磁盘vmdk

命令  vmkfstools -X 88g  D.vmdk (切勿对受快照的磁盘操作,会直接损坏磁盘) 只能往大调。

克隆vmdk磁盘

命令  Vmkfstools -i  A.vmdk  -d  thin  A_new.vmdk  
(注意-d thin关键参数,如原磁盘为thick不加就克隆出原thick磁盘模式,当原是thin不加就克隆出zeroedthick

成功的克隆出A_new.vmdk 和 A_new-flat.vmdk两个文件,是直接可用的磁盘了。

克隆方式从厚置备转换为精简置备:

如需要使用A_new.vmdk 这个thin盘代替原来就以下操作:
# cat VMName-new.vmdk

可以看到 # Extent description 中是指向A_new-flat.vmdk

先将原两文件A.vmdk和A-flat.vmdk 备份到别的地方,

# mkdir  oldvmdk 

# mv A.vmdk  ./oldvmdk

# mv A-flat.vmdk ./oldvmdk

将这新的A_new.vmdk 和 A_new-flat.vmdk两个文件改为旧的名字,并修改Extent description内容,开机测试。

注意:

转换了磁盘类型或扩展了磁盘容量,清单并不会自动刷新,需将该磁盘暂时从清单中移除,再次添加。

在虚拟机系统除了dd 、SDelete还有哪里操作可以将vmdk置零

1. 分区助手的“擦除磁盘/分区/数据”功能也是填0操作(只能对整个分区操作,并该分区是已经删除分区的)。

2. DiskGenius “清除扇区数据”除了默认填0操作,还可自定义,如填FF(十六进制),vmkfstools -K清理空间就无效了,只好再次填0再清。

3. window磁盘管理中,先将磁盘转换为动态磁盘,并组建软raid。

  • 11
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值