VMware硬盘分区减小不是压缩,优化碎片
  • 搜集了很多信息,都是 VMware压缩的操作,并没有减少硬盘分区大小的操作。
  • 这里记录一下我成功的步鄹 用到一下几种工具帮助我快速解决问题。
  1. Windows powerShell 这个工具帮助 习惯Linux操作的用户,在window上也一样操作。
  2. vmware-vdiskmanager.exe 今天的主角,去VMware路径下去找。
  3. DiskGenius 这个工具帮助我们减小虚拟的磁盘分区。
1. 虚拟机运行OS全部关机,找到以下磁盘路径位置

esxi虚拟机硬盘超过2T esxi 虚拟机磁盘减小_vmware


2. 打开 Node1_R.vmdk文件 26个SPARSE部分对应26个分区文件

esxi虚拟机硬盘超过2T esxi 虚拟机磁盘减小_VMware_02

esxi虚拟机硬盘超过2T esxi 虚拟机磁盘减小_虚拟磁盘_03


3. 转换方法:

该工具的命令行写法为:


工具名 参数1 源文件 参数2 参数3 目标名称


vmware-vdiskmanager -r(转格式) Windows XP.vmdk(例) -t(目的) 1(目的磁盘类型,1 为拆分+动态分配) newdisk.vmdk


该命令中, -r, -t 1两部分不需要变化, 目标名称 随意,之后会改名覆盖源文件。 源文件名 根据实际情况变化,而 工具名 通常要带上路径。


所以完整的命令大约是如下样子:

# 运行vmware-vdiskmanager对虚拟机磁盘进行碎片整理
   .\vmware-vdiskmanager.exe -d F:\BigData\Node1\Node1.vmdk
   
# 整理碎片后,修复VM磁盘文件
   .\vmware-vdiskmanager.exe -R F:\BigData\Node1\Node1.vmdk
   
# 收缩VM磁盘,然后再次修复。
   .\vmware-vdiskmanager.exe -k F:\BigData\Node1\Node1.vmdk
   .\vmware-vdiskmanager.exe -R F:\BigData\Node1\Node1.vmdk
   
# 通过转换原始VM磁盘文件来创建新的VM磁盘文件   
   .\vmware-vdiskmanager.exe -r F:\BigData\Node1\Node1.vmdk -t 1 F:\BigData\Node1\Node1_N.vmdk
   
# 通过 DiskGenius 对虚拟分区 减小分区,图片在下面。
# 加减运算,图片在下面。

# 最后 清理死数据. 
# 使用 vmware-vdistmanager -r <源.vmdk> -t 1 <目标.vmdk> 再作一次转换。虽说是转换,但目的却是清理死数据
   .\vmware-vdiskmanager.exe -r F:\BigData\Node1\Node1_N.vmdk -t 1 F:\BigData\Node1\Node1_R.vmdk
   .\vmware-vdiskmanager.exe -d F:\BigData\Node1\Node1_R.vmdk 
   
# VMware 重新添加已有的磁盘,大功告成!
  • DiskGenius 对虚拟分区
  • 加减乘除:
  • 打开最终生成的 Node1_R.vmdk 文件,定位到 # Extent description 部分。这次重点放在第二部分数字内容上,经计算,该数字为每个分块文件对应虚拟硬盘的簇数量,每簇 512 Byte,2 簇 = 1KB。我们的已经存在的容量为 100GB,也就是:
  • 100(GB)*1024(MB/GB)*1024(KB/MB)= 10485760 KB = 209715200 簇。
  • 目标 64GB,换算成簇 / 8323072 大于16点多, 自己去计算。 补足余量
  • 清理转换后的残留虚拟磁盘数据,
  • 路径下: F:\BigData\Node1\ Node1-s.vmdk和26个文件,具体看上面的图片,
  • 中间产生的 Node1_N.vmk 和16个文件 中间有死数据,只留下Node1_R的文件。
  • 让VMware添加最终的虚拟磁盘文件。
  • esxi虚拟机硬盘超过2T esxi 虚拟机磁盘减小_虚拟磁盘_04