头部背景图片
Si1eo's Blog |
Si1eo's Blog |

Vmdk磁盘压缩

前几天,因为工作的需要,需要把几台虚拟机从ESXi服务器上导出成ovf的格式。然而有一台Linux虚拟机导出后发现,虚拟磁盘占用与虚拟机里实际占用多了很多,导致浪费磁盘空间。后面我通过vmware自带的磁盘整理工具帮助它成功减肥。

由于是之前执行的操作,暂时没有操作截图。后续有类似操作会补充截图。

Linux以下四种方式都通用,Windows虚拟机则推荐使用方法三和方法四。

虚拟磁盘收缩目前我发现有4种方式。

方法一、vmware-toolbox-cmd[推荐]

在linux系统里,如果安装了vmware-tools只需要执行如下命令。

1
2
[[email protected] ~]# vmware-toolbox-cmd disk shrink /
PS:"/"为你想要减肥的位置,默认情况下如果linux只分配一个分区的话就直接把"/"给减肥。

执行以后,系统会开始走进度条,之后VMware Workstation Pro上就会出现进度条并开始自动化的减肥。

之后会进行一段CPU占用率高的时间,减肥时间取决于物理机的硬件配置。

我这边60G的Linux虚拟机在我的笔记本的机械硬盘上进行减肥操作,大约花了半个小时的时间。

方法二、vmware-toolbox [GUI]

若Linux服务器有GUI且已经安装了vmware-tools,可以在终端里输入vmware-toolbox,之后在图形界面里依次选择Shrink -> / ->左下角的Shrink ->Yes

之后等它完成磁盘收缩前的准备阶段后,单击Yes继续减肥。

方法三:通过VMware Workstation Pro客户端进行收缩。

若是Linux,可在虚拟机上使用自带的compact可视化工具进行辅助操作,按下面的步骤操作即可。

  1. 将虚拟磁盘没用的空间全部填充为zero

    1
    [[email protected] /]# dd if=/dev/zero of=/zero.file bs=2M
  2. 删除zero文件并将虚拟机关闭

    1
    2
    [[email protected] /]# rm -rf zero.file
    [[email protected] /]# poweroff
  3. 进入虚拟机设置按照下面进行收缩操作

虚拟机设置

若是Windows,建议先通过系统自带的磁盘整理工具进行一次碎片整理,然后关闭虚拟机,通过虚拟机配置里先碎片整理再压缩。

方法四:VMware-vdiskmanager

​ 使用VMware软件提供的VMware-vdiskmanager磁盘管理工具,此命令是一个命令行工具。

​ 使用方法如下:

  1. 打开cmd或者powershell输入以下命令

    1
    2
    3
    PS C:\WINDOWS\system32> X:\Program Files\VMware-install-folder\vmware-vdiskmanager.exe -k Z:\Shrink-folder\si1eo-linux.vmdk
    Shrink: 100% done.
    Shrink completed successfully.
  2. 等它进度百分比走完代表收缩过程结束。

总结

这四种方式各有特点:

方法一和二可以收缩有快照的磁盘文件。安全稳定。

方法三也可以收缩有快照的磁盘文件,但是需要让虚拟机处于关闭状态。

方法四是可以在不用完全打开虚拟机的配置文件进行快速执行收缩操作,特别适合单文件分离收缩操作。

需要注意的是,如果方法三或方法四操作后没有特别大的减肥效果,建议在虚拟机里安装vmware-tools后通过vmware-toolbox进行减肥,可参照方法一或方法二。

avatar Si1eo 奋斗中的一位运维单身狗!