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, 创建删除dockerimage。直接后果就是本子180GB空间要耗尽。删了vm里的无用的文件,接下来的主要问题,需要把VM瘦身磁盘空间还给本子。

尝试player的菜单里做碎片整理-压缩,只要回来3GB,还不够,guest linux有38GB free



[email protected]:/media/osboxes/VMware Tools$ df -lh

Filesystem Size Used Avail Use% Mounted on

udev 568M 0 568M 0% /dev

tmpfs 116M 9.3M 107M 9% /run

/dev/sda1 48G 7.2G 38G 17% /



应该使用vmware tools从guest OS里开始下手,vwmare会把一个工具放在guest OS 里(应该是mount给guest)。需要自己去安装下,Linux里叫vmware-toolbox-cmd,通过它发起回收。



[email protected]:~#vmware-toolbox-cmd help disk

disk:perform disk shrink operations

Subcommands:

list: list available locations

shrink <location>: wipes and shrinks a file system at the givenlocation

shrinkonly: shrinks all disks

wipe <location>: wipes a file systemat the given location



我用的是shrink 。需要root权限,有一些限制(最好看下后面的pdf手册,声程不支持journalingfs: ext4/xfs/jfs, what fuck ext3就不算了? 反正我直接ext4上运行了也没错我提示)

1. 准备阶段:主要搜集不用的guest os unused blocks(such as deleted files) . VMWare会把带回收的空间抢占主/inflate,免得被人再分走. 48GBSSD 83%是deleted可回收; scan大概几分钟;期间vm可以正常访问。然后你会发现整个磁盘基本都被占用了



[email protected]:/media/osboxes/VMware Tools$ df -lh

Filesystem Size Used Avail Use% Mounted on

udev 568M 0 568M 0% /dev

tmpfs 116M 9.3M 107M 9% /run

/dev/sda1 48G 44G 909M 99% /



2. 回收阶段: 花的时间较长20来分钟,vm没有响应。网络中断

完成后,resume (就开始报错, 被忽略。能报错说明系统没死...)

thin LUN. 依然显示50GB,但大部分是hole/unprovisoing. 本子的windows已经显示多了30+GB



[email protected]:~$ df -lh

Filesystem Size Used Avail Use% Mounted on

udev 568M 0 568M 0% /dev

tmpfs 116M 9.4M 107M 9% /run

/dev/sda1 48G 7.9G 37G 18% /

2. VMWare reclaim storage总结

主要是之前做的ppt ,

vSphere Reclaim基本到5.1之后才可用;5.0虽然开始支持但因为重大bug不推荐。在ESX 5.5 的两种方式

1. vmkfstools–y <%free space to unmap>

- it crease a tempfile in top dir named.asyncUnmapFile. Reserved size= number *blockSize

2. esxcli storagevmfs unmap --volume-label=volume_label|--volume-uuid=volume_uuid--reclaim-unit=number

- number of VMFSblocks to UNMAP per iteration. If not specified, default value of 200.

- Run may fail or runlong time depending on #and how storage array behaves/performance

主要实现步骤(官图):


基本思路说起来简单:上层不用了,要通知下层: 在哪,多大,请注意回收(不是保证);但环节很多(至少3个还不算array内部的),细节很多 尤其是早期的layout就没考虑shrink功能;做起来那叫个费劲

  1. GuestOS 里需要VMWare tools eitherwipe or shrink fs。主要目的搜集free block &location. 通常要在fs级别要和fs一起。除非你一把清了磁盘不care数据
  2. VMWare tools 得到结果/ metadata
  3. vSphere 通知vmfs/sparse disk做re-org: unmap to vSCSI -> SE sparse Disk

这就要搬数据了取决于sparse/thin layout 的设计,但原则是大块回收。Vmware的设计比较简单而糙。

read /write to move,update sparseDisk metadata, compact, use a temp file .asyncUnmapFil. vSphere issue “shrink”when enough free at end of SE disk,

不是说糙就多坏,但很可能设计之初没这方面的意识和考虑;最后补功课,往往事倍功半or 效果不好。怎么做都别扭的感觉。恨不得推倒重来

4. 然后VMFS级别释放空间: by SCSI unmap or NFS-truncate

5. 最后通知后台的share storage回收空间,这样资源才能分给其他使用者。async to reclaim,企业存储里分层太多(sw defined精髓...),基本上把上面的4步再来一遍。异步-攒-搬-更新metadata,IO密集, metadata load/lock/update。不是轻松的事。什么时候真正把空间回收了,还没法细说;当然都基本做到了透明 online. 以后再需要空间时会alloc-on-demand,然后…循环。

当然,用户操作起来基本是半/自动化, 意识不到这里面一坨苦逼的活,而且极容易出错,影响性能。我shrink完了,guest linux隔会就开始报system detectexception. Fuck也不知道哪个筋出错了,不过还能继续用,那就委屈了。

新的存储系统基本在设计之初就充分考虑thin,shrink,当然端到端的支持得配合;shrink/reclaim的效率,性能影响这得看各家的功夫,不一而足,尤其是还纠缠着snap,dedup这些share-data以及auto-balancee/rebuild/tiering之类的IO密集应用,在架构,layout方面要综合考虑,一开始就考虑。

其他参考:

1. vmware tool手册,linux/windows ***bsd都支持:http://www.vmware.com/pdf/vmware-tools-installation-configuration.pdf

2. 利用vMotion+vSphere 的方法:http://blogs.vmware.com/vsphere/2012/04/vaai-thin-provisioning-block-reclaimunmap-in-action.html

时间: 2024-12-12 08:41:32

VMWare 回收磁盘空间的相关文章

vmware压缩磁盘空间的方法

家里笔记本40G,可用空间怎么挤都只剩7G,从单位copy回来的linux虚拟机要10G,经检查实际使用空间5.7,也就是其他都是空余空间,可以释放掉.(只适合independent.Persistent,不适合preallocated ,ext4文件系统无效)     释放方法有如下几种 for linux 1.进入系统后,在GUI界面下启动 vmware-toolbox,选择shrink后根据图形提示选择partation压缩 2.在shell里 vmware-toolbox-cmd dis

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

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

Linux中VMware虚拟机增加磁盘空间的扩容操作

用VMwareware虚拟机安装的Cent OS 7系统剩余空间不足,造成软件无法正常安装.如果重新装一遍系统就需要重新配置好开发环境和软件的安装配置.通过上网搜集的资料,结合自己的实践,总结了如下扩大硬盘空间的详细步骤,希望对大家有帮助. (1)打开VMware,选择Edit Virtual mache settings,Utilities下拉框中找到Expand如下图 (2)将磁盘空间扩大到70G,点击Expand即可,随后进入一个较长的Expand过程,完成后这是新的空间已经增加,但lin

VMware下LINUX的虚拟机增加磁盘空间

先关闭虚拟机电源,做如下设置:“ 虚拟机”--“虚拟机设置”--“磁盘”--“扩展” 可以随意添加你需要增到到的磁盘大小(如15Gb,表示磁盘总量,包含原来的磁盘容量); 再重启电源进入系统做如下步骤设置. 1. 启动虚拟机系统,用root登录(后续所有步骤都应以root用户身份登录操作),在 命令行用fdisk -l查看.由于这里是直接修改了原始空间大小,因此可以看到/dev/sda空间改变为16.1GB(原磁盘空间从10G增加到15G).如果是从VMware菜单里增加虚拟硬盘,则会多出一个/

【翻译自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

VMware 虚拟机(linux)增加根目录磁盘空间

今天查看学校的监控报修系统,不能访问了!!!系统运行很慢,用top命令查看发现内存使用率90%,用"df -h "查看"/"目录使用率已达到80%,导致系统运行很慢.我用以下方法扩大根目录磁盘空间.一.关闭你的虚拟机系统,找到如下内容:选择"Edit Virtual mache settings" 点击"Expand" 扩大虚拟机的空间为"40G"(根据个人需要填写空间大小).但是linux下面并不可见.二

VMware虚拟机Mac OS X无法调整扩展硬盘大小,更新xcode时出现磁盘空间不足

使用VMware虚拟机搭建的MacOSX,安装xcode时出现磁盘空间不足的错误. 因为很多朋友在初次安装MacOSX的时候都默认选择40G的磁盘大小,结果用了没两天之后就发现磁盘不够用了. 这时,百度一下你会找到很多相关文章,大体上是正确的,但针对于OS10.10以上的版本就有可能会出现 PCI 外置磁盘大小通过 磁盘工具 无法扩展的问题. 呈现出来的效果,是可以在磁盘工具中看到对应的磁盘已经扩展到目标大小,但是不能进行分区,其中唯一一个MacOSX分区也不能进行抹掉和扩展操作,原因很简单,这

VMware 虚拟机(linux)增加根目录磁盘空间

VMware 虚拟机(linux)增加根目录磁盘空间     今天查看学校的监控报修系统,不能访问了!!!系统运行很慢,用top命令查看发现内存使用率90%,用"df -h ”查看“/”目录使用率已达到80%,导致系统运行很慢.我用以下方法扩大根目录磁盘空间. 一.关闭你的虚拟机系统,找到如下内容:选择"Edit Virtual mache settings” 点击"Expand“ 扩大虚拟机的空间为"40G"(根据个人需要填写空间大小).但是linux下

VMware vSphere Client下增加虚拟机磁盘空间的方法

随着系统运维时间的增长,磁盘就日益的损耗,如果遇到虚拟机报磁盘空间不足怎么办?还好,我们可以通过磁盘阵列增加磁盘空间,然后扩容到虚拟机中去. 对于linux虚拟机磁盘扩容的方案有两种,一种就是原有的实体机中还有足够的硬盘,我们可以直接调大现有虚拟机磁盘,或者采用新增加一块磁盘方式:第二种,如果原有磁盘的空间不足,只能采用新增加一块磁盘的方式处理.但是其实这两种方式增加磁盘后,都需要在Linux中进行挂载,扩容操作.不是通过VMware vSphere Client客户端操作完了就可以用了. 后续