• 虚拟机压缩虚拟磁盘的方法


    虚拟机删除文件后,虚拟磁盘占用空间并不会缩小,甚至在外面手动压缩都无法缩小,这是因为虚拟机并不能感知到客户系统删除了文件

    实际上虚拟机虚拟磁盘压缩需要两步,需要首先在内部填0,然后在外面压缩才能缩小占用空间

    下面是vmware和virtualbox下的虚拟机压缩虚拟磁盘的方法

    【vmware】

    linux虚拟机内执行下列命令:

    1. sudo vmware-toolbox-cmd disk wipe /
    2. sudo vmware-toolbox-cmd disk wipe /home
    3. sudo vmware-toolbox-cmd disk wipe /boot
    4. sudo vmware-toolbox-cmd disk shrinkonly
    5. # sudo vmware-toolbox-cmd disk list : 列出可用
    6. # sudo vmware-toolbox-cmd disk wipe : 擦除未使用空间
    7. # sudo vmware-toolbox-cmd disk shrinkonly : 压缩磁盘
    8. # sudo vmware-toolbox-cmd disk shrink : 擦除未使用空间并压缩磁盘

    在windows虚拟机内执行下列命令(需要管理员命令提示符):

    "C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd" disk shrink c:\

    命令会首先对未使用空间填0, 然后会弹出vmware的压缩虚拟磁盘进度条,进度条走完以后就压缩成功了

     【virtualbox

    windows虚拟机首先需要在虚拟机内下载sysinternals的sdelete(假设放到了c:\):

    SDelete - Sysinternals | Microsoft Learn

    然后在虚拟机内执行下列命令(需要管理员命令提示符),对未使用的空间填0:

    c:\sdelete c: -z

    linux虚拟机首先需要在虚拟机内执行下列命令,对未使用空间填0:

    1. sudo su -c 'dd if=/dev/zero of=/zero bs=512; rm -v /empty'
    2. sudo su -c 'dd if=/dev/zero of=/home/zero bs=512; rm -v /home/empty'
    3. sudo su -c 'dd if=/dev/zero of=/boot/zero bs=512; rm -v /boot/empty'
    4. # 写全0文件不会导致虚拟磁盘体积膨胀
    5. # empty文件一定要显示已删除后再重启,否则可能因为磁盘空间不足而无法登录

    然后需要关闭虚拟机,在windows主机命令行下执行下面的命令压缩虚拟磁盘:

    "C:\Program Files\Oracle\VirtualBox\vboxmanage" modifyhd "%USERPROFILE%\VirtualBox VMs\ubuntu\ubuntu.vdi" --compact

    linux主机的命令:

    vboxmanage modifyhd ~/VirtualBox\ VMs/ubuntu/ubuntu.vdi --compact

  • 相关阅读:
    文件搜索工具(Python实现)
    $\Beta$分布推导与可视化
    如何实现前端音频和视频播放?
    数据结构与算法分析之优先队列
    想要拿到手软的大厂offer必须要刷5遍这份5000页Java 最全技术栈手册
    【每日一题】最大矩形
    应用程序进程,内存,虚拟内存之间的关系详解(2)
    Java抽象类
    判断一个数是否偶数(深度思考)
    JavaList集合根据ParentId递归【无限套娃】
  • 原文地址:https://blog.csdn.net/defrag257/article/details/127923940