寻觅生命中的那一片浅草......

vmware回收vmdk空间

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 参考资料

2018年九月
« 2月    
 12
3456789
10111213141516
17181920212223
24252627282930