当前位置: 首页 > news >正文

有效压缩 Hyper-v linux Centos 的虚拟磁盘 VHDX

参考:

http://www.360doc.com/content/22/0505/16/67252277_1029878535.shtml


VHDX 有个不好的问题就是,如果在里面存放过文件再删除,那么已经使用过的空间不会压缩,导致空间一直被占用。那么就需要想办法压缩空间。

还有一点,就是当文件删除时,实际上并没有真正的清空。需要用 0 覆盖对应的空间,才能压缩完成。windows下解决方案很多,linux 的比较少见,所以记录下。

1. 取消开机启动项,避免占用磁盘。

vi /etc/rc.local

对于我的系统,注释掉这行即可。dpd 是我开机的自定义守护脚本,如果没有可忽略。 

2. 卸载磁盘

可以使用 df -h 查看磁盘的挂载

可以看到我这里有

/dev/sda1  - /dev/sde1 五块盘

分别卸载。 

 sudo umount /dev/sda1
 sudo umount /dev/sdb1
...

如果卸载不了,可以使用

这里的 xxx 就是刚才的挂载点

sudo lsof +D /xxx/disk/xxx 

第一列的 command 就是占用的进程名称。 

pkill 进程名称 然后立即卸载即可。

3. 使用 zerofree 填充

没装就先 :

sudo yum install zerofree

4. 压缩磁盘

Optimize-VHD -Path C:\YourVHDX.vhdx -Mode Prezeroed,这个不用在磁盘管理工具里面附加VHDX,不是NTFS,附加了对效率也没提升。

5. 注意图形化中的压缩时没用的。即使已经 zerofree 过。

还是要靠 powershell


 以下是参考的原文(因为很多网站后面内容就没了,所以拷贝一份):

首先明确:hyper-v管理器里面“设置-硬盘驱动器-编辑-选择操作-压缩”并没有明显的效果。
然后区分几个关键词:
hyper-v里面的“压缩(compact)”:虚机里磁盘的可用空间不变,虚拟磁盘文件大小变小(因为是回收虚机因删除文件释放出来的磁盘空间,所以不可能压缩到比虚机里磁盘总已用空间还小)
hyper-v里面的“收缩”:虚机里磁盘的可用空间变小。(不可能影响已用空间)
磁盘管理工具(diskmgmt.msc)里面的“压缩卷”:使磁盘的可用空间变小。(不可能影响已用空间)

最后看方案:
1.有人给出的方案:碎片整理无效,还有反作用,应该先收缩,再压缩,再扩展。
如:先在磁盘管理工具里面“操作-附加VHD”,然后在有可用空间的分区上右键“压缩卷”(只支持NTFS,而且过程漫长,无进度条),然后分离VHD,在hyper-v管理器里面压缩,就有效果。
2.也有方案:建一个新的虚拟磁盘,使用diskgen或者Ghost11把原来磁盘的内容(按文件或者文件系统或者partition2partition拷过来),然后把新的虚拟磁盘当原来的磁盘用。


这两个感觉都不是很好,速度慢或根本没有进度条不知道过程如何了;或者不支持linux;或者新磁盘的有些硬件特征会改变。

看下面的:


3.对NTFS文件,用Windows Server PowerShell里面的Optimize-VHD小命令(cmdlet),操作如下:a.先在磁盘管理工具里面“操作-附加VHD”,记得勾选“read-only”(必不可少)b.打开PowerShell,输入Optimize-VHD -Path C:\YourVHDX.vhdx -Mode Full。运行后很快就OK了,磁盘文件显著变小了。关于Optimize-VHD详细一点的说明可参考:https://docs.microsoft.com/zh-tw/powershell/module/hyper-v/optimize-vhd?view=win10-ps

4.Linux系统,压缩前,要在虚机层面将标记为DELETE的文件彻底删除,也就是将虚机磁盘上的位置0。(具体置零的方法:**systemrescue cd,用该cd启动虚机,运行zerofree,如zerofree /dev/sda1),然后再压缩。 这是国外论坛上给的方法,老外说这个systemrescuecd小巧好用,值得一试,**网站:https://www./。然后Optimize-VHD -Path C:\YourVHDX.vhdx -Mode Prezeroed,这个不用在磁盘管理工具里面附加VHDX,不是NTFS,附加了对效率也没提升。

这两个方案应该是比较靠谱的,方案3亲测有效。

相关文章:

  • 密码破解工具
  • 蓝桥杯-小明的彩灯(差分)
  • 【网络安全 | 漏洞挖掘】通过分析JS文件实现接口未授权访问与账户接管
  • MicroPython 开发ESP32应用教程 之 Timer、GPIO中断
  • OpenCV图像平滑处理方法详解
  • X 进制减法
  • C++-ffmpeg-2-3-工厂模式封装SDL-9-7
  • Qt上hook钩子的使用,监测键盘和鼠标。
  • Crow介绍及使用
  • 一文了解亿级数据检索:RedisSearch
  • OpenBMC:BmcWeb 处理http请求5 检查权限
  • C#核心学习(十二)面向对象--多态(1)virtual override和base三剑客
  • CExercise_07_1指针和数组_5检查一个整数数组是否是回文,即正序与倒序相同
  • 【C#知识点详解】LinkedList<T>储存结构详解
  • Spring Boot接口返回Long类型的数据时丢失精度的全局处理
  • LCR 131. 砍竹子 I
  • 什么是混合搜索Hybrid Search?
  • Python 小练习系列 | Vol.14:掌握偏函数 partial,用函数更丝滑!
  • 和DeepSeek聊高速公路定向广播
  • NO.79十六届蓝桥杯备战|数据结构-扩展域并查集-带权并查集|团伙|食物链|银河英雄传说(C++)
  • 湖南网站开发 岚鸿/哈尔滨seo关键词
  • 封开网站建设/在线网页制作工具
  • 做自动化设备哪个网站/站长收录平台
  • 淘宝详情页做的比较好的网站/短视频培训机构
  • 宁波网站推广优化联系电话/sem搜索引擎
  • 云南seo整站优化报价/营销咨询服务