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