IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    vmware回收vmdk空间

    夜行人发表于 2017-09-13 09:38:39
    love 0

    1 问题

    我们内网有一个vmware的集群,以前年少无知,所以vmdk的格式选择了「厚置备延迟置零」,也就是分配多少,vmdk文件就会占用多大的空间,这里的好处是能提供较好的io,但我们虚拟机大部分用来做测试的,所以对io要求不高,而且实际并不需要这么大的空间,这里是第一个问题,我们需要将vmdk转换为「Thin Provisioning」,就是按需使用,并不是一开始就分配所有空间。

    后来的虚拟机,我们选用了「Thin Provisioning」,部分虚拟机在一开始写了大量文件,现在不需要存了,需要回收这部分空间,这是第二个问题。

    2 转换

    有2个方式

    vShpere Client

    就是迁移虚拟机,只需要转移存储就可以了,当然也可以连主机也迁移了,原来就是在迁移选择存储时,可以在「选择虚拟磁盘格式」下拉菜单中选择「Thin Provisioning」,我感觉原理和vmkfstools是一样的,就是在迁移的过程中,做一次转换

    vmkfstools

    由于我没有使用此方法,直接贴参考资料好了

    Cloning and converting virtual machine disks with vmkfstools (1028042)

    3 回收空间

    在转换的时候, 发现部分机器已经回收空间了,但有些没有自动回收,暂时不知道什么原因,下面讲下手动回收。

    大概原理是先在虚拟机里标记哪些磁盘块是已经删除了,然后再通过vmkfstools进行回收

    Windows虚拟机

    可以用

    sdelete.exe -z [DRIVE:]

    Linux虚拟机

    比较粗暴,用dd填满磁盘,再删除文件

    由于它是填满磁盘,就是该盘会最终占用分配给它的全部空间,所以要看看该vmdk所在的物理盘是否有足够的空间

    # xxx为你需要回收的磁盘挂载点
    cd xxx
    dd if=/dev/zero of=zeroes bs=4096 || rm -f zeroes

    开始回收

    经过上面2种虚拟机的处理后,就可以ssh到vmware物理机上进行回收

    此处注意,vmkfstools要用xxx.vmdk,不要用xxx-ctk.vmk,也不要用xxx-flat.vmdk

    # 处理前确认大小
    du -h xxx-flat.vmdk
    vmkfstools -K xxx.vmdk
    # 处理后确认大小
    du -h xxx-flat.vmdk

    处理完后,在「vShpere Client」中,可以选择「刷新存储使用情况」来获取最新的使用情况

    4 注意

    磁盘有价,数据无价,请操作前做好备份,操作的时候,再三确认

    5 参考资料

    • 更改虚拟磁盘的厚置备或精简置备 (2088104)
    • ESXi虚拟机vmdk压缩瘦身
    • Zero free space using SDelete to shrink Thin Provisioned VMDK


沪ICP备19023445号-2号
友情链接