V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
catalina
V2EX  ›  问与答

VMware 内安装 Linux 客操作系统,一段时间后虚拟硬盘文件变大,虽然 Linux 系统里并没有那么多文件。

  •  
  •   catalina · 2019-03-17 13:11:34 +08:00 · 3302 次点击
    这是一个创建于 2096 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有什么办法把它缩小到系统占用的大小吗?

    https://s2.ax1x.com/2019/03/17/AZTS1A.png
    22 条回复    2019-03-18 16:02:39 +08:00
    qihu3721
        1
    qihu3721  
       2019-03-17 15:12:51 +08:00   ❤️ 2
    要不试试 vmware-toolbox-cmd disk shrinkonly,前提是安装了 vmware tools
    vocaloid
        2
    vocaloid  
       2019-03-17 15:34:56 +08:00
    这已经是多年来一直以来的 bug 了...一年前我寻遍了解决方法什么事都没有
    ipwx
        3
    ipwx  
       2019-03-17 15:47:12 +08:00
    @vocaloid 这不是 bug。。。

    @catalina 至少需要在 Linux 里面有啥 VMware 提供的辅助性软件,不然你不可能把大小压缩下去。因为磁盘分区表是 VM 管的,而不是宿主机管的。但是我对这个可操作性表示怀疑,因为 ext4 这个文件系统太 TM 复杂了。。。
    wd
        4
    wd  
       2019-03-17 16:22:34 +08:00 via iPhone
    搜一下 shrink 就好了 可能就是 1 楼那个命令
    catalina
        5
    catalina  
    OP
       2019-03-17 17:01:43 +08:00 via Android
    @qihu3721 好像没用,虚拟磁盘文件还是那么大。这其实就是 VMware 里面的压缩磁盘对吗?我试过的。。。
    4679kun
        6
    4679kun  
       2019-03-17 18:56:47 +08:00
    ![Snipaste_2019-03-17_18-55-08.png]( https://i.loli.net/2019/03/17/5c8e27988410f.png)
    4679kun
        7
    4679kun  
       2019-03-17 18:57:57 +08:00
    第一步可以采用 zerofree 这个程序,可能需要在 livecd 里操作
    catalina
        8
    catalina  
    OP
       2019-03-17 19:08:31 +08:00 via Android
    @qihu3721 抱歉,这是一次误判。主要原因是:当时不知道我是怎么想的,竟然不是在 console 界面、而是在 ssh 里执行了这个命令,结果执行过程中 ssh 断了。。。😂
    谢谢你的命令,它很管用😄
    catalina
        9
    catalina  
    OP
       2019-03-17 19:11:48 +08:00 via Android
    @4679kun 好的,下回我试试看😃
    catalina
        10
    catalina  
    OP
       2019-03-17 19:33:03 +08:00 via Android
    @4679kun 找到了,网上也有写到这个,不过它说是可以直接用 grub 里安装好的 recovery mode 执行。
    https://www.maketecheasier.com/shrink-your-virtualbox-vm
    虽然说的是 vbox 的,不过应该 wipe 的方法都是通用的
    ysc3839
        11
    ysc3839  
       2019-03-17 20:55:38 +08:00
    VMWare 硬盘设置那里就有个压缩的选项,用这个无效吗?
    Osk
        12
    Osk  
       2019-03-17 21:14:06 +08:00
    吃瓜群众关注下, 反正 Hyper-V 使用的 VHDX 是可以 compact 的, 但是如果是 Linux 使用的文件系统的话就不清楚了, 据说可以在 Linux 里面执行 fstrim 标记哪些 block 无效, 然后关闭虚拟机执行 compact. 不知道有没有大佬试过.
    catalina
        13
    catalina  
    OP
       2019-03-17 21:31:16 +08:00 via Android
    @ysc3839 嗯,得先把已删除的文件置 0,来让硬盘设置里的那个功能知道哪能删除。。。
    @Osk 好像是这个原理。
    ysc3839
        14
    ysc3839  
       2019-03-17 21:35:25 +08:00
    @catalina 这么说的话似乎涉及到 Trim 了。主控 (虚拟机) 不知道哪些数据是没用的可以删除的。
    catalina
        15
    catalina  
    OP
       2019-03-17 21:51:13 +08:00 via Android
    @ysc3839 嗯。。。不,它其实是可以知道的,但是如同 fat 和 ntfs 一样,ext4 好像也不会直接删除文件内容,而是把文件从文件表中移除,结果就搞得虚拟磁盘越来越大。。。这个过程其实有点像 xp 上手动 trim ssd 的过程,强行释放被已经删除的文件捆绑住的簇,从而恢复 ssd 的速度,而虚拟机则是直接把释放的簇占用的空间还给了主机硬盘。
    4679kun
        16
    4679kun  
       2019-03-17 22:34:14 +08:00
    Cu635
        17
    Cu635  
       2019-03-17 22:35:38 +08:00
    “‘一段时间后’虚拟硬盘文件变大”,那么在这“一段时间” lz 是怎么用的 linux ?有没有随时 apt upgrade 的习惯?
    catalina
        18
    catalina  
    OP
       2019-03-17 23:05:09 +08:00 via Android
    @Cu635 有,但这个虚拟机主要是用来跑 boinc 的,总得来说往硬盘里写了一堆文件、又删了一堆文件。。。
    @4679kun 都是我现在已经知道了的答案啊?
    flynaj
        19
    flynaj  
       2019-03-17 23:58:52 +08:00 via Android
    VirtualBox 的话可以先填充 0,在收缩一下。文件删除只是标记删除,实际文件数据并没有清空。
    catalina
        20
    catalina  
    OP
       2019-03-18 07:20:58 +08:00 via Android
    @flynaj vmware 好像也是这个样子的
    Cu635
        21
    Cu635  
       2019-03-18 15:56:36 +08:00
    @catalina
    “总得来说往硬盘里写了一堆文件、又删了一堆文件”,这是关键啊。
    刚开始里面的 linux 只有 3.2G ,硬盘上的 vmdk 文件也就只有 3.2G 上下,你往里面写个 5G 的数据,vmdk 自然要跟着长大啊。但是你删除了这 5G 之后,vmdk 文件不会缩小,结果这是这样了。
    另外,vmware 好像是有工具在这种情况下缩小 vmdk 文件的,不需要提前填充 0。我之前是在虚拟机关机的情况下在软件界面找的。

    @flynaj
    跟“文件删除只是标记删除,实际文件数据并没有清空。”只是具有相关性不具有因果性,这个功能就是看虚拟机软件有没有做了,vmware 是可以不提前填充 0 就缩小 vmdk 文件的,vbox 才是需要提前填充 0 的。
    catalina
        22
    catalina  
    OP
       2019-03-18 16:02:39 +08:00 via Android
    @Cu635 对啊,所以我没感到奇怪。
    而且 ext4 的 vmware 并不支持直接缩小,ntfs 和 fat32 好像效果不错(根据之前的经验)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5488 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:54 · PVG 09:54 · LAX 17:54 · JFK 20:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.