VMware虚拟机,从厚置备改为精简置备,并减少硬盘的实际占用空间 使用再生龙Clonezilla备份还原Linux系统 使用再生龙Clonezilla备份还原Linux系统

工做中因为前期规划不足,致使磁盘空间分配较大,并且是厚置备。后期再也不须要时,没法把用不到的空间释放出来,形成空间浪费。通过摸索和实验验证,到最终解决问题,总结出来两种方案。 html

风险提示:两种方案的实验都验证经过了,但第一种方案在生产环境中没有成功,若有相似问题,建议采用第二种方案!post

环境:Esxi 6.5,vCenter 6.5 U1e,Ubuntu 16.04

因为初始分配给Ubuntu 16.04虚拟机的硬盘空间是2T,后期数据量加大须要增长空间时,发现分区表不是GPT,没法超过2T。测试

致使已在vCenter里给虚拟机增长的空间浪费,也就是下图中的这个数字,只能调高,不能调低。url

VMware官方对于这种状况提供了一种解决办法:经过迁移,改变虚拟磁盘格式,从“厚置备”改为“精简置备”,从而减少实际占用的空间。spa

                       

官方网址:https://kb.vmware.com/s/article/2014832操作系统

 

经过官方的解决办法进行处理,以下图所示,结果喜忧参半3d

 

喜的是实际占用的空间确实减少了,忧的是减少的空间仅仅是未分配的unallocated这部分,前面已分配的空间,虽然文件已经删除了,但并无减少。htm

 

第一种方案:压缩文件系统大小,分区未使用空间充零,修改虚拟磁盘格式。

经过以下实验进行验证:

1.给虚拟机分配40G的厚置备硬盘空间并安装系统,安装完毕后不进行任何操做,直接关机。

                       

2.关机后迁移虚拟机,虚拟磁盘格式从“厚置备”改为“精简置备”,已用空间减少到6GB,说明在没有写入数据的状况下,经过官方的方法是能够减少实际占用空间的。

 

3. 再次迁移虚拟机,把虚拟磁盘格式从“精简置备”改为“厚置备”,而后拷贝大文件把硬盘空间填充满。

  

4.把大文件删除,关机后迁移虚拟机,虚拟磁盘格式从“厚置备”改为“精简置备”。能够看到,虽然删除了大文件,但经过迁移的方式也仅仅能回收没有写入过数据的很小的一块空间。

 

5.用SystemRescueCD启动虚拟机,减少/分区的大小

 

fdisk –lu              #查看磁盘分区状况blog

 

e2fsck –f /dev/sda1        #检查文件系统图片

 

resize2fs /dev/sda1 10G        #把文件系统大小调整为10G

parted /dev/sda                                   #使用parted调整硬盘分区,注意是/dev/sda

(parted)resizepart 1 12G                    #调整分区大小,1表明/dev/sda1

#注意:parted分区大小计算方式不一样,因此多留一些空间防止数据丢失

 

resize2fs /dev/sda1         #调整文件系统大小,使之与分区大小相匹配

 

6.重启,从本地硬盘启动,查看磁盘分区大小,能够看到/dev/sda1已经被压缩了。 

 

7.在未分配的空间新建一个分区,而后所有置零

 

dd bs=64k if=/dev/zero of=/dev/sda2           #bs表示每次写的块的大小

 

在Gparted中能够看到File System变成了unknown

 

删除/dev/sda2,使之变成unallocated

 

8.关机后迁移虚拟机,把虚拟磁盘格式从“精简置备”改为“厚置备快速置零”。

之因此要多作这么一步,是由于上面的操做只是在把操做系统里把未使用的空间置零了,虚拟机并不知道,所以须要经过这步操做,让虚拟机把未使用的空间也置零。

 

9.再次迁移虚拟机,把虚拟磁盘格式从“厚置备”改为“精简置备”,能够看到已用空间减少到10GB,也就是实际占用的空间确实减少了。

 

经过上述实验,基本上验证了虚拟机回收空间的标准:

  1. 分配后还没有写入过数据;
  2. 分配后写入过数据,但在操做系统和虚拟机里均进行过置零操做。

以上方法回收的是Linux系统的空间,理论上Windows系统也能够经过这个方法回收,只是用到的软件不一样。

 

第二种方案:使用再生龙Clonezilla软件进行备份还原

虽然上文提到第一种方法实验验证经过了,可是在操做生产环境中的机器时,因为各类未知缘由(快照、磁盘整合、漫长的数据迁移时间…),致使最后的结果并不理想,虽然成功的把文件系统的大小减少到了55G,但从厚置备转换为精简置备后,并无达到空间释放的目的。

此处应有图片,晚上截图。

这个方法走不通以后,我想到发生问题之初,曾咨询过一位老哥,当时提到了一个很牛逼的软件,产自宝岛台湾的再生龙Clonezilla。

因为那时我尚未找到减少文件系统大小的方法,而再生龙有以下限制,所以也就无法经过备份还原的方式解决问题。

其实如今想来,经过先备份,再还原到精简置备磁盘的方式,应该也是能够的,不过没有验证,并且对于强迫症患者来讲,这个方案也并不完美。

因此个人方法是先备份原机器/dev/sda1分区,再新建一台虚拟机,空间比原机器/dev/sda1分区的大小略大(缘由参考使用再生龙Clonezilla备份还原Linux系统),而后把备分内容还原到新虚拟机上,以后再把原机器/dev/sdb1分区所在的虚拟磁盘添加到新虚拟机中。

固然,仍是要先经过实验验证一番,具体步骤另外写了一篇随笔使用再生龙Clonezilla备份还原Linux系统

实验很成功,效果很满意,接下来就是在半夜没有业务的时候关机调整了。得益于再生龙Clonezilla超高的备份还原效率,30分钟以内完成了所有操做,通过一天的测试,一切正常。

原机器和新机器的配置对比

 

 

总结:

1.前期的规划很重要,没作好规划,后期就要浪费不少时间来填坑。

2.大致积虚拟磁盘文件的迁移很费时间,一夜可能只能干这一件事。

相关文章
相关标签/搜索