ESXi thin磁盘空间回收

背景:Team的ESXi 容量只剩几个GB了,这在大数据时代连塞牙缝都不够啊,怎么办?问老板要求去购买硬盘,这流程下来估计要好长一段时间。既然开源不成,只能想办法节流了

登上ESXi看看空间,只剩6.8G了

~ # df -h        
Filesystem   Size   Used Available Use% Mounted on        
VMFS-5     459.8G 452.9G      6.8G  99% /vmfs/volumes/datastore1        
vfat         4.0G  26.8M      4.0G   1% /vmfs/volumes/518bbaed-cd4205ae-4433-6cae8b618a8b        
vfat       249.7M 152.2M     97.6M  61% /vmfs/volumes/e004997b-19d900f9-78d2-328c75df8d55        
vfat       249.7M   8.0K    249.7M   0% /vmfs/volumes/f425ab7f-19a30306-ecae-df98131c5d28        
vfat       285.8M 179.8M    106.1M  63% /vmfs/volumes/518bbae7-ef420f9e-c41f-6cae8b618a8b

再用Vsphere Client连上去看看哪几台机器占用空间比较多,例如红色方框那台windows2008,显示已经使用40GB

但是windows 2008系统显示只用了29GB,那还有11GB空间哪里去了?

这不得不从VMware磁盘类型说起,在创建虚机类型的时候有三种方式

  • 厚置备延迟置零(zeroed thick):以默认的厚格式创建虚拟磁盘。创建过程中为虚拟磁盘分配所需空间。创建时不会擦除物理设备上保留的任何数据,但是以后从虚拟机首次执行写操作时会按需要将其置零。
  • 厚置备置零 (eager zeroed thick):创建支持群集功能(如 Fault  Tolerance)的厚磁盘。在创建时为虚拟磁盘分配所需的空间。与zeroed thick相反,在创建过程中会将物理设备上保留的数据置零。创建这种格式的磁盘所需的时间可能会比创建其他类型的磁盘长。
  • 精简置备(thin):使用精简置备格式。最初,精简置备的磁盘只使用该磁盘最初所需要的数据存储空间。如果以后精简磁盘需要更多空间,则它可以增长到为其分配的最大容量。

在创建windows2008虚机的时候,我指定的是44G的空间,但是由于我使用了thin的方式,可能实际上只分配了20GB的空间(还有24GB的空间预留着,并没有从存储上真正分出去)。但后来随着windows2008文件越来越多,使用了40GB,那这时候我发现空间不够了,我删了5GB的空间,你以为在ESXi 存储上这5GB空间被释放了,其实不是的,这5GB空间还是真正划分给了windows2008虚机。这是因为这个delete操作是在guest OS中进行的,而hypervisor并不知道这个动作,所以也就不会reclaim space。所以,我们会发现虽然在创建虚机的时候使用thin的方式,但是到后来后端存储空间还是消耗的很快。VMware也考虑到了这一点,我们可以使用vMotion或者vSphere Converter来reclaim空间,但是对于ESXi有什么办法呢?

google了下,发现有人提到过这种方式。sdelete是个小工具,可以自己下载。

c:\share>sdelete.exe -z C:        
SDelete - Secure Delete v1.61        
Copyright (C) 1999-2012 Mark Russinovich        
Sysinternals - www.sysinternals.com        
SDelete is set for 1 pass.        
Free space cleaned on c:\        
1 drives zapped

经过自己实际测试发现不行,存储空间没有任何变化。继续google发现了VMware提供了vmkfstools这个工具

~ # cd /vmfs/volumes/datastore1/test-Win2008/

/vmfs/volumes/5075da98-8eef8322-f2b2-6cae8b618a8a/test-Win2008 # ls        
test-Win2008-flat.vmdk  test-Win2008.nvram      test-Win2008.vmdk       test-Win2008.vmsd       test-Win2008.vmx        test-Win2008.vmxf       vmware.log

/vmfs/volumes/5075da98-8eef8322-f2b2-6cae8b618a8a/test-Win2008 # du -ah *        
36.0G   test-Win2008-flat.vmdk        
1.0M    test-Win2008.nvram        
0       test-Win2008.vmdk        
0       test-Win2008.vmsd        
8.0k    test-Win2008.vmx        
0       test-Win2008.vmxf        
2.0M    vmware.log

发现这个vmdk占用了36G,但是之前提过我这台机器实际只用了29G,用vmkfstool reclaim空间

/vmfs/volumes/5075da98-8eef8322-f2b2-6cae8b618a8a/test-Win2008 # vmkfstools --punchzero test-Win2008.vmdk    
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576        
Hole Punching: 100% done.

24.4G   test-Win2008-flat.vmdk        
1.0M    test-Win2008.nvram        
0       test-Win2008.vmdk        
0       test-Win2008.vmsd        
8.0k    test-Win2008.vmx        
0       test-Win2008.vmxf        
2.0M    vmware.log

运行完之后发现减少了12G

~ # df -h        
Filesystem   Size   Used Available Use% Mounted on        
VMFS-5     459.8G 445.4G    14.3G  97% /vmfs/volumes/datastore1        
vfat         4.0G  27.0M      4.0G   1% /vmfs/volumes/518bbaed-cd4205ae-4433-6cae8b618a8b        
vfat       249.7M 152.2M     97.6M  61% /vmfs/volumes/e004997b-19d900f9-78d2-328c75df8d55        
vfat       249.7M   8.0K    249.7M   0% /vmfs/volumes/f425ab7f-19a30306-ecae-df98131c5d28        
vfat       285.8M 179.8M    106.1M  63% /vmfs/volumes/518bbae7-ef420f9e-c41f-6cae8b618a8b

参考文章--http://vjourneyman.com/reclaim-thin-provisioned-space-punchzero

时间: 2024-10-11 00:55:32

ESXi thin磁盘空间回收的相关文章

VMWare 回收磁盘空间

两部分内容: 1) 实际操作体验下在vmware player里回收guest vm的磁盘空间,还给host: 2)顺便把之前的笔记翻出来关于vmware unmap/reclaim, 对照总结. 1. 回收VMWare 磁盘空间 笔记本上用了VMWarePlayer 7(面向个人版本,装在win/mac里),里面装了ubuntu15.Thin disk. 半年不到,几个折腾下来发现vm占的空间就飙上去了现在要占40+GB.反思下,主要由于linuxpackage upgdate, 创建删除do

【翻译自mos文章】回收 asm磁盘空间的方法

回收 asm磁盘空间的方法 參考原文: How To Reclaim Asm Disk Space? (Doc ID 351866.1) 适用于: Oracle Database - Enterprise Edition - Version 10.2.0.1 and later Information in this document applies to any platform. ***Checked for relevance on 12-Jan-2010*** 目标: 你有一套2节点的r

VMwareESX/ESXi与厚置备(thick)虚拟机磁盘转换精简置备(thin)磁盘

VMwareESX/ESXi与厚置备(thick)虚拟机磁盘转换精简置备(thin)磁盘 Thick转换为Thin模式没有直接的图形操作方式,需要使用SSH登录ESX/ESXi主机,默认ESX/ESXi主机没有开启SSH服务,需要先打开SSH;   1.开启SSH服务 选择虚拟机所在的ESX/ESXi主机,点击"配置"选项卡,点击"安全配置文件",点击服务面板的"属性"; 2.使用SSH工具登陆并生成Thin磁盘 用户名:root 密码:使用vS

从Linux系统磁盘空间不足引发的Zabbix服务器数据库迁移

之前一直没有去关心Zabbbix服务器存储空间问题,最近Zabbix报警提示/根目录磁盘空间不足,于是登录Zabbix看了一下,发现根目录只有1.3MB了,这怎么办了?第一个想到的是扩展根目录,结果发现不是用的LVM,采用的是标准的,心想也还可以救,就和Windows一样将D盘.E盘删除,再将D盘的空间扩展给C盘就OK啊,于是开始着手操作(注意提前备份虚拟机,最好做一个快照,出问题了好恢复) [[email protected] /]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /

Linux磁盘空间被未知资源耗尽【转】

Linux磁盘空间被未知资源耗尽 在linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行.这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小. 遇到这种情况,基本可以断定是某些大文件被某些程序占用了,并且这些大文件已经被删除了,但是对应的文件句柄没有被某些程序关闭

工作小记-Linux磁盘空间告警

环境介绍:Centos 6.3运行在ESXi 5.5中 分了两块虚拟磁盘,一块大小为IDE 20G,另外一块为SCSI 73G. lsb_release -a查看版本为CentOS release 6.3(Final) 这套环境是之前的人员部署的,里面跑的是unison同步SVN版本的服务,从一台windows server 2012 R2同步过来. 查看了挂载到根分区的磁盘/dev/sda2大小15G,100% use,第一块磁盘分区为/dev/sda1 --> /boot /dev/sda2

如何扩展ESXi虚拟机磁盘容量

说明: 使用Vmware ESXI虚拟化解决方案的运维,大概都会遇到这样问题:虚拟机磁盘空间不足,如何扩展磁盘空间? windows2008系统可以直接在磁盘管理中,直接右键扩展即可:但是win2003系统,需要借助命令来进行扩展,下面主要介绍命令如何使用.整个操作过程不需要重启服务器. 举例:  一台虚拟机E盘空间1T, 已经满了,现在要扩展到1.5T. 方法: 1. 打开VCenter, 选择VM, 选择编辑设置, 将E磁盘从1T调整到1.5T 2. 在VM中, 进入磁盘管理,能够看到dis

ESXI虚拟机磁盘管理(精简-厚置-精简)

VMwareESX/ESXi 精简置备(thin)与厚置备(thick)虚拟机磁盘之间转换 VMwareESX/ESXi 虚拟机磁盘thin与thick之间转换 注意:转换前请先关闭虚拟机!!! 一.  Thin to Thick转换 Thin to Thick转换比较简单,在图形界面即可操作; 1.    浏览数据存储 点击虚拟机所在的ESX/ESXi主机,在"配置"选项卡下的"存储器"内,浏览数据存储, 2.    进入相应虚拟机目录,选择相应磁盘的vmdk文件

Linux 系统磁盘空间占满,df 和 du 结果不一致

服务器运行一段时间后df查看磁盘剩余空间不足,通过du统计发现被几个文件占用,遂删除之.过了一段时间磁盘空间再次不足,通过du统计却找不到那么多大文件.搜索后才得知原因:文件删除后空间没有释放,du统计不到这部分文件:需要通过lsof排查,然后kill文件进程.以下记录排查处理过程: df查看分区使用情况 df(Disk Free) 以磁盘分区为单位查看文件系统,获取硬盘被占用空间和剩余空间等信息.df 默认显示的文件大小单位Byte:使用命令df -h,以KB,MB,GB为单位,提高可读性.